{
 "cells": [
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T08:02:51.981338Z",
     "start_time": "2025-01-13T08:02:48.632253Z"
    }
   },
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.cluster import KMeans\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import silhouette_score"
   ],
   "outputs": [],
   "execution_count": 1
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:01.799264Z",
     "start_time": "2025-01-13T08:02:55.115292Z"
    }
   },
   "source": [
    "# 读取四张表的数据\n",
    "#读取了订单和产品id的关联，csv比较大\n",
    "prior = pd.read_csv(\"./data/instacart/order_products__prior.csv\")"
   ],
   "outputs": [],
   "execution_count": 2
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:07.562462Z",
     "start_time": "2025-01-13T08:03:07.502296Z"
    }
   },
   "source": [
    "#产品id，与过道的对应\n",
    "products = pd.read_csv(\"./data/instacart/products.csv\")"
   ],
   "outputs": [],
   "execution_count": 3
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:10.677042Z",
     "start_time": "2025-01-13T08:03:09.188146Z"
    }
   },
   "source": [
    "#订单id和用户id的对应，csv比较大\n",
    "orders = pd.read_csv(\"./data/instacart/orders.csv\")"
   ],
   "outputs": [],
   "execution_count": 4
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:12.764490Z",
     "start_time": "2025-01-13T08:03:12.757609Z"
    }
   },
   "source": [
    "#超市的过道，过道放的产品的品类\n",
    "aisles = pd.read_csv(\"./data/instacart/aisles.csv\")"
   ],
   "outputs": [],
   "execution_count": 5
  },
  {
   "cell_type": "code",
   "source": [
    "prior.head()  #订单id，产品id，下面只需要掌握订单和产品的关联即可"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:14.869317Z",
     "start_time": "2025-01-13T08:03:14.856840Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   order_id  product_id  add_to_cart_order  reordered\n",
       "0         2       33120                  1          1\n",
       "1         2       28985                  2          1\n",
       "2         2        9327                  3          0\n",
       "3         2       45918                  4          1\n",
       "4         2       30035                  5          0"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_id</th>\n",
       "      <th>product_id</th>\n",
       "      <th>add_to_cart_order</th>\n",
       "      <th>reordered</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>33120</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>28985</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>9327</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "      <td>45918</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>30035</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 6
  },
  {
   "cell_type": "code",
   "source": [
    "products.head() #产品id，产品名称，过道id"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:19.118304Z",
     "start_time": "2025-01-13T08:03:19.108913Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   product_id                                       product_name  aisle_id  \\\n",
       "0           1                         Chocolate Sandwich Cookies        61   \n",
       "1           2                                   All-Seasons Salt       104   \n",
       "2           3               Robust Golden Unsweetened Oolong Tea        94   \n",
       "3           4  Smart Ones Classic Favorites Mini Rigatoni Wit...        38   \n",
       "4           5                          Green Chile Anytime Sauce         5   \n",
       "\n",
       "   department_id  \n",
       "0             19  \n",
       "1             13  \n",
       "2              7  \n",
       "3              1  \n",
       "4             13  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>product_id</th>\n",
       "      <th>product_name</th>\n",
       "      <th>aisle_id</th>\n",
       "      <th>department_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>Chocolate Sandwich Cookies</td>\n",
       "      <td>61</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>All-Seasons Salt</td>\n",
       "      <td>104</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>Robust Golden Unsweetened Oolong Tea</td>\n",
       "      <td>94</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>Smart Ones Classic Favorites Mini Rigatoni Wit...</td>\n",
       "      <td>38</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>Green Chile Anytime Sauce</td>\n",
       "      <td>5</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "cell_type": "code",
   "source": [
    "orders.head() #订单id，用户id"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:21.403439Z",
     "start_time": "2025-01-13T08:03:21.392950Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   order_id  user_id eval_set  order_number  order_dow  order_hour_of_day  \\\n",
       "0   2539329        1    prior             1          2                  8   \n",
       "1   2398795        1    prior             2          3                  7   \n",
       "2    473747        1    prior             3          3                 12   \n",
       "3   2254736        1    prior             4          4                  7   \n",
       "4    431534        1    prior             5          4                 15   \n",
       "\n",
       "   days_since_prior_order  \n",
       "0                     NaN  \n",
       "1                    15.0  \n",
       "2                    21.0  \n",
       "3                    29.0  \n",
       "4                    28.0  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_id</th>\n",
       "      <th>user_id</th>\n",
       "      <th>eval_set</th>\n",
       "      <th>order_number</th>\n",
       "      <th>order_dow</th>\n",
       "      <th>order_hour_of_day</th>\n",
       "      <th>days_since_prior_order</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2539329</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2398795</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>15.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>473747</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>12</td>\n",
       "      <td>21.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2254736</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>29.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>431534</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>15</td>\n",
       "      <td>28.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 8
  },
  {
   "cell_type": "code",
   "source": [
    "aisles.head() #过道id，对应过道里放了哪些产品类别"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:24.010323Z",
     "start_time": "2025-01-13T08:03:24.002681Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   aisle_id                       aisle\n",
       "0         1       prepared soups salads\n",
       "1         2           specialty cheeses\n",
       "2         3         energy granola bars\n",
       "3         4               instant foods\n",
       "4         5  marinades meat preparation"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>aisle_id</th>\n",
       "      <th>aisle</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>prepared soups salads</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>specialty cheeses</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>energy granola bars</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>instant foods</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>marinades meat preparation</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 9
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T08:03:48.622320Z",
     "start_time": "2025-01-13T08:03:26.230403Z"
    }
   },
   "source": [
    "# 合并四张表到一张表  （用户-物品类别），在这里挂了，用下阿里云\n",
    "#订单表和产品表关联\n",
    "#用户买了哪些订单，订单里面有哪些产品，产品对应的过道，过道对应的产品类别\n",
    "_mg = pd.merge(prior, products, on=['product_id', 'product_id'])\n",
    "_mg = pd.merge(_mg, orders, on=['order_id', 'order_id'])\n",
    "mt = pd.merge(_mg, aisles, on=['aisle_id', 'aisle_id'])"
   ],
   "outputs": [
    {
     "ename": "MemoryError",
     "evalue": "Unable to allocate 2.42 GiB for an array with shape (10, 32434489) and data type int64",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mMemoryError\u001B[0m                               Traceback (most recent call last)",
      "Cell \u001B[1;32mIn[10], line 6\u001B[0m\n\u001B[0;32m      4\u001B[0m _mg \u001B[38;5;241m=\u001B[39m pd\u001B[38;5;241m.\u001B[39mmerge(prior, products, on\u001B[38;5;241m=\u001B[39m[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mproduct_id\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mproduct_id\u001B[39m\u001B[38;5;124m'\u001B[39m])\n\u001B[0;32m      5\u001B[0m _mg \u001B[38;5;241m=\u001B[39m pd\u001B[38;5;241m.\u001B[39mmerge(_mg, orders, on\u001B[38;5;241m=\u001B[39m[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124morder_id\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124morder_id\u001B[39m\u001B[38;5;124m'\u001B[39m])\n\u001B[1;32m----> 6\u001B[0m mt \u001B[38;5;241m=\u001B[39m \u001B[43mpd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmerge\u001B[49m\u001B[43m(\u001B[49m\u001B[43m_mg\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maisles\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mon\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43maisle_id\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43maisle_id\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:184\u001B[0m, in \u001B[0;36mmerge\u001B[1;34m(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)\u001B[0m\n\u001B[0;32m    169\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m    170\u001B[0m     op \u001B[38;5;241m=\u001B[39m _MergeOperation(\n\u001B[0;32m    171\u001B[0m         left_df,\n\u001B[0;32m    172\u001B[0m         right_df,\n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m    182\u001B[0m         validate\u001B[38;5;241m=\u001B[39mvalidate,\n\u001B[0;32m    183\u001B[0m     )\n\u001B[1;32m--> 184\u001B[0m     \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mop\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mget_result\u001B[49m\u001B[43m(\u001B[49m\u001B[43mcopy\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcopy\u001B[49m\u001B[43m)\u001B[49m\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:888\u001B[0m, in \u001B[0;36m_MergeOperation.get_result\u001B[1;34m(self, copy)\u001B[0m\n\u001B[0;32m    884\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mleft, \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mright \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_indicator_pre_merge(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mleft, \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mright)\n\u001B[0;32m    886\u001B[0m join_index, left_indexer, right_indexer \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_get_join_info()\n\u001B[1;32m--> 888\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_reindex_and_concat\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m    889\u001B[0m \u001B[43m    \u001B[49m\u001B[43mjoin_index\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mleft_indexer\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mright_indexer\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcopy\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcopy\u001B[49m\n\u001B[0;32m    890\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m    891\u001B[0m result \u001B[38;5;241m=\u001B[39m result\u001B[38;5;241m.\u001B[39m__finalize__(\u001B[38;5;28mself\u001B[39m, method\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_merge_type)\n\u001B[0;32m    893\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mindicator:\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:879\u001B[0m, in \u001B[0;36m_MergeOperation._reindex_and_concat\u001B[1;34m(self, join_index, left_indexer, right_indexer, copy)\u001B[0m\n\u001B[0;32m    877\u001B[0m left\u001B[38;5;241m.\u001B[39mcolumns \u001B[38;5;241m=\u001B[39m llabels\n\u001B[0;32m    878\u001B[0m right\u001B[38;5;241m.\u001B[39mcolumns \u001B[38;5;241m=\u001B[39m rlabels\n\u001B[1;32m--> 879\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[43mconcat\u001B[49m\u001B[43m(\u001B[49m\u001B[43m[\u001B[49m\u001B[43mleft\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mright\u001B[49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcopy\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcopy\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m    880\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m result\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:395\u001B[0m, in \u001B[0;36mconcat\u001B[1;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001B[0m\n\u001B[0;32m    380\u001B[0m     copy \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mFalse\u001B[39;00m\n\u001B[0;32m    382\u001B[0m op \u001B[38;5;241m=\u001B[39m _Concatenator(\n\u001B[0;32m    383\u001B[0m     objs,\n\u001B[0;32m    384\u001B[0m     axis\u001B[38;5;241m=\u001B[39maxis,\n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m    392\u001B[0m     sort\u001B[38;5;241m=\u001B[39msort,\n\u001B[0;32m    393\u001B[0m )\n\u001B[1;32m--> 395\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mop\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mget_result\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:684\u001B[0m, in \u001B[0;36m_Concatenator.get_result\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m    680\u001B[0m             indexers[ax] \u001B[38;5;241m=\u001B[39m obj_labels\u001B[38;5;241m.\u001B[39mget_indexer(new_labels)\n\u001B[0;32m    682\u001B[0m     mgrs_indexers\u001B[38;5;241m.\u001B[39mappend((obj\u001B[38;5;241m.\u001B[39m_mgr, indexers))\n\u001B[1;32m--> 684\u001B[0m new_data \u001B[38;5;241m=\u001B[39m \u001B[43mconcatenate_managers\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m    685\u001B[0m \u001B[43m    \u001B[49m\u001B[43mmgrs_indexers\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mnew_axes\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconcat_axis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbm_axis\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcopy\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcopy\u001B[49m\n\u001B[0;32m    686\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m    687\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcopy \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m using_copy_on_write():\n\u001B[0;32m    688\u001B[0m     new_data\u001B[38;5;241m.\u001B[39m_consolidate_inplace()\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\internals\\concat.py:131\u001B[0m, in \u001B[0;36mconcatenate_managers\u001B[1;34m(mgrs_indexers, axes, concat_axis, copy)\u001B[0m\n\u001B[0;32m    124\u001B[0m \u001B[38;5;66;03m# Assertions disabled for performance\u001B[39;00m\n\u001B[0;32m    125\u001B[0m \u001B[38;5;66;03m# for tup in mgrs_indexers:\u001B[39;00m\n\u001B[0;32m    126\u001B[0m \u001B[38;5;66;03m#    # caller is responsible for ensuring this\u001B[39;00m\n\u001B[0;32m    127\u001B[0m \u001B[38;5;66;03m#    indexers = tup[1]\u001B[39;00m\n\u001B[0;32m    128\u001B[0m \u001B[38;5;66;03m#    assert concat_axis not in indexers\u001B[39;00m\n\u001B[0;32m    130\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m concat_axis \u001B[38;5;241m==\u001B[39m \u001B[38;5;241m0\u001B[39m:\n\u001B[1;32m--> 131\u001B[0m     mgrs \u001B[38;5;241m=\u001B[39m \u001B[43m_maybe_reindex_columns_na_proxy\u001B[49m\u001B[43m(\u001B[49m\u001B[43maxes\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mmgrs_indexers\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mneeds_copy\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m    132\u001B[0m     \u001B[38;5;28;01mreturn\u001B[39;00m mgrs[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;241m.\u001B[39mconcat_horizontal(mgrs, axes)\n\u001B[0;32m    134\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(mgrs_indexers) \u001B[38;5;241m>\u001B[39m \u001B[38;5;241m0\u001B[39m \u001B[38;5;129;01mand\u001B[39;00m mgrs_indexers[\u001B[38;5;241m0\u001B[39m][\u001B[38;5;241m0\u001B[39m]\u001B[38;5;241m.\u001B[39mnblocks \u001B[38;5;241m>\u001B[39m \u001B[38;5;241m0\u001B[39m:\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\internals\\concat.py:230\u001B[0m, in \u001B[0;36m_maybe_reindex_columns_na_proxy\u001B[1;34m(axes, mgrs_indexers, needs_copy)\u001B[0m\n\u001B[0;32m    220\u001B[0m         mgr \u001B[38;5;241m=\u001B[39m mgr\u001B[38;5;241m.\u001B[39mreindex_indexer(\n\u001B[0;32m    221\u001B[0m             axes[i],\n\u001B[0;32m    222\u001B[0m             indexers[i],\n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m    227\u001B[0m             use_na_proxy\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m,  \u001B[38;5;66;03m# only relevant for i==0\u001B[39;00m\n\u001B[0;32m    228\u001B[0m         )\n\u001B[0;32m    229\u001B[0m     \u001B[38;5;28;01mif\u001B[39;00m needs_copy \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m indexers:\n\u001B[1;32m--> 230\u001B[0m         mgr \u001B[38;5;241m=\u001B[39m \u001B[43mmgr\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcopy\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m    232\u001B[0m     new_mgrs\u001B[38;5;241m.\u001B[39mappend(mgr)\n\u001B[0;32m    233\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m new_mgrs\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:604\u001B[0m, in \u001B[0;36mBaseBlockManager.copy\u001B[1;34m(self, deep)\u001B[0m\n\u001B[0;32m    601\u001B[0m         res\u001B[38;5;241m.\u001B[39m_blklocs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_blklocs\u001B[38;5;241m.\u001B[39mcopy()\n\u001B[0;32m    603\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m deep:\n\u001B[1;32m--> 604\u001B[0m     \u001B[43mres\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_consolidate_inplace\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m    605\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m res\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1788\u001B[0m, in \u001B[0;36mBlockManager._consolidate_inplace\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m   1782\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21m_consolidate_inplace\u001B[39m(\u001B[38;5;28mself\u001B[39m) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m   1783\u001B[0m     \u001B[38;5;66;03m# In general, _consolidate_inplace should only be called via\u001B[39;00m\n\u001B[0;32m   1784\u001B[0m     \u001B[38;5;66;03m#  DataFrame._consolidate_inplace, otherwise we will fail to invalidate\u001B[39;00m\n\u001B[0;32m   1785\u001B[0m     \u001B[38;5;66;03m#  the DataFrame's _item_cache. The exception is for newly-created\u001B[39;00m\n\u001B[0;32m   1786\u001B[0m     \u001B[38;5;66;03m#  BlockManager objects not yet attached to a DataFrame.\u001B[39;00m\n\u001B[0;32m   1787\u001B[0m     \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mis_consolidated():\n\u001B[1;32m-> 1788\u001B[0m         \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mblocks \u001B[38;5;241m=\u001B[39m \u001B[43m_consolidate\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mblocks\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m   1789\u001B[0m         \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_is_consolidated \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mTrue\u001B[39;00m\n\u001B[0;32m   1790\u001B[0m         \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_known_consolidated \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mTrue\u001B[39;00m\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:2269\u001B[0m, in \u001B[0;36m_consolidate\u001B[1;34m(blocks)\u001B[0m\n\u001B[0;32m   2267\u001B[0m new_blocks: \u001B[38;5;28mlist\u001B[39m[Block] \u001B[38;5;241m=\u001B[39m []\n\u001B[0;32m   2268\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m (_can_consolidate, dtype), group_blocks \u001B[38;5;129;01min\u001B[39;00m grouper:\n\u001B[1;32m-> 2269\u001B[0m     merged_blocks, _ \u001B[38;5;241m=\u001B[39m \u001B[43m_merge_blocks\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m   2270\u001B[0m \u001B[43m        \u001B[49m\u001B[38;5;28;43mlist\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mgroup_blocks\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdtype\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdtype\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcan_consolidate\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m_can_consolidate\u001B[49m\n\u001B[0;32m   2271\u001B[0m \u001B[43m    \u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m   2272\u001B[0m     new_blocks \u001B[38;5;241m=\u001B[39m extend_blocks(merged_blocks, new_blocks)\n\u001B[0;32m   2273\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mtuple\u001B[39m(new_blocks)\n",
      "File \u001B[1;32mD:\\pycharm解释器\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:2301\u001B[0m, in \u001B[0;36m_merge_blocks\u001B[1;34m(blocks, dtype, can_consolidate)\u001B[0m\n\u001B[0;32m   2298\u001B[0m     new_values \u001B[38;5;241m=\u001B[39m bvals2[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;241m.\u001B[39m_concat_same_type(bvals2, axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m0\u001B[39m)\n\u001B[0;32m   2300\u001B[0m argsort \u001B[38;5;241m=\u001B[39m np\u001B[38;5;241m.\u001B[39margsort(new_mgr_locs)\n\u001B[1;32m-> 2301\u001B[0m new_values \u001B[38;5;241m=\u001B[39m \u001B[43mnew_values\u001B[49m\u001B[43m[\u001B[49m\u001B[43margsort\u001B[49m\u001B[43m]\u001B[49m\n\u001B[0;32m   2302\u001B[0m new_mgr_locs \u001B[38;5;241m=\u001B[39m new_mgr_locs[argsort]\n\u001B[0;32m   2304\u001B[0m bp \u001B[38;5;241m=\u001B[39m BlockPlacement(new_mgr_locs)\n",
      "\u001B[1;31mMemoryError\u001B[0m: Unable to allocate 2.42 GiB for an array with shape (10, 32434489) and data type int64"
     ]
    }
   ],
   "execution_count": 10
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:02:48.683255800Z",
     "start_time": "2024-07-15T03:02:48.659738700Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   order_id  product_id  add_to_cart_order  reordered  \\\n0         2       33120                  1          1   \n1         2       28985                  2          1   \n2         2        9327                  3          0   \n3         2       45918                  4          1   \n4         2       30035                  5          0   \n5         2       17794                  6          1   \n6         2       40141                  7          1   \n7         2        1819                  8          1   \n8         2       43668                  9          0   \n9         3       33754                  1          1   \n\n                                        product_name  aisle_id  department_id  \\\n0                                 Organic Egg Whites        86             16   \n1                              Michigan Organic Kale        83              4   \n2                                      Garlic Powder       104             13   \n3                                     Coconut Butter        19             13   \n4                                  Natural Sweetener        17             13   \n5                                            Carrots        83              4   \n6                   Original Unflavored Gelatine Mix       105             13   \n7           All Natural No Stir Creamy Almond Butter        88             13   \n8                            Classic Blend Cole Slaw       123              4   \n9  Total 2% with Strawberry Lowfat Greek Strained...       120             16   \n\n   user_id eval_set  order_number  order_dow  order_hour_of_day  \\\n0   202279    prior             3          5                  9   \n1   202279    prior             3          5                  9   \n2   202279    prior             3          5                  9   \n3   202279    prior             3          5                  9   \n4   202279    prior             3          5                  9   \n5   202279    prior             3          5                  9   \n6   202279    prior             3          5                  9   \n7   202279    prior             3          5                  9   \n8   202279    prior             3          5                  9   \n9   205970    prior            16          5                 17   \n\n   days_since_prior_order                       aisle  \n0                     8.0                        eggs  \n1                     8.0            fresh vegetables  \n2                     8.0           spices seasonings  \n3                     8.0               oils vinegars  \n4                     8.0          baking ingredients  \n5                     8.0            fresh vegetables  \n6                     8.0  doughs gelatins bake mixes  \n7                     8.0                     spreads  \n8                     8.0  packaged vegetables fruits  \n9                    12.0                      yogurt  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>order_id</th>\n      <th>product_id</th>\n      <th>add_to_cart_order</th>\n      <th>reordered</th>\n      <th>product_name</th>\n      <th>aisle_id</th>\n      <th>department_id</th>\n      <th>user_id</th>\n      <th>eval_set</th>\n      <th>order_number</th>\n      <th>order_dow</th>\n      <th>order_hour_of_day</th>\n      <th>days_since_prior_order</th>\n      <th>aisle</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>2</td>\n      <td>33120</td>\n      <td>1</td>\n      <td>1</td>\n      <td>Organic Egg Whites</td>\n      <td>86</td>\n      <td>16</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>eggs</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>2</td>\n      <td>28985</td>\n      <td>2</td>\n      <td>1</td>\n      <td>Michigan Organic Kale</td>\n      <td>83</td>\n      <td>4</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>fresh vegetables</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2</td>\n      <td>9327</td>\n      <td>3</td>\n      <td>0</td>\n      <td>Garlic Powder</td>\n      <td>104</td>\n      <td>13</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>spices seasonings</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>2</td>\n      <td>45918</td>\n      <td>4</td>\n      <td>1</td>\n      <td>Coconut Butter</td>\n      <td>19</td>\n      <td>13</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>oils vinegars</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>2</td>\n      <td>30035</td>\n      <td>5</td>\n      <td>0</td>\n      <td>Natural Sweetener</td>\n      <td>17</td>\n      <td>13</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>baking ingredients</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>2</td>\n      <td>17794</td>\n      <td>6</td>\n      <td>1</td>\n      <td>Carrots</td>\n      <td>83</td>\n      <td>4</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>fresh vegetables</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>2</td>\n      <td>40141</td>\n      <td>7</td>\n      <td>1</td>\n      <td>Original Unflavored Gelatine Mix</td>\n      <td>105</td>\n      <td>13</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>doughs gelatins bake mixes</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>2</td>\n      <td>1819</td>\n      <td>8</td>\n      <td>1</td>\n      <td>All Natural No Stir Creamy Almond Butter</td>\n      <td>88</td>\n      <td>13</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>spreads</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>2</td>\n      <td>43668</td>\n      <td>9</td>\n      <td>0</td>\n      <td>Classic Blend Cole Slaw</td>\n      <td>123</td>\n      <td>4</td>\n      <td>202279</td>\n      <td>prior</td>\n      <td>3</td>\n      <td>5</td>\n      <td>9</td>\n      <td>8.0</td>\n      <td>packaged vegetables fruits</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>3</td>\n      <td>33754</td>\n      <td>1</td>\n      <td>1</td>\n      <td>Total 2% with Strawberry Lowfat Greek Strained...</td>\n      <td>120</td>\n      <td>16</td>\n      <td>205970</td>\n      <td>prior</td>\n      <td>16</td>\n      <td>5</td>\n      <td>17</td>\n      <td>12.0</td>\n      <td>yogurt</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mt.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:02:51.194242100Z",
     "start_time": "2024-07-15T03:02:51.178181300Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "(32434489, 14)"
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mt.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [
    {
     "data": {
      "text/plain": "order_id                  0.00000\nproduct_id                0.00000\nadd_to_cart_order         0.00000\nreordered                 0.00000\nproduct_name              0.00000\naisle_id                  0.00000\ndepartment_id             0.00000\nuser_id                   0.00000\neval_set                  0.00000\norder_number              0.00000\norder_dow                 0.00000\norder_hour_of_day         0.00000\ndays_since_prior_order    0.06407\naisle                     0.00000\ndtype: float64"
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mt.isnull().sum()/mt.shape[0]  #数据缺失率，没有缺失值"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T03:03:37.182181700Z",
     "start_time": "2024-07-15T03:03:32.673043200Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:06:29.610239100Z",
     "start_time": "2024-07-15T03:05:03.578920700Z"
    }
   },
   "outputs": [],
   "source": [
    "# 交叉表（特殊的分组工具），如果在这一步内存不够了，重启一下jupyter，还是不行，筛选一部分用户的数据，进行聚类\n",
    "cross = pd.crosstab(mt['user_id'], mt['aisle'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:07:04.612187800Z",
     "start_time": "2024-07-15T03:07:04.573700Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "aisle    air fresheners candles  asian foods  baby accessories  \\\nuser_id                                                          \n1                             0            0                 0   \n2                             0            3                 0   \n3                             0            0                 0   \n4                             0            0                 0   \n5                             0            2                 0   \n6                             0            0                 0   \n7                             0            0                 0   \n8                             0            1                 0   \n9                             0            0                 0   \n10                            0            1                 0   \n\naisle    baby bath body care  baby food formula  bakery desserts  \\\nuser_id                                                            \n1                          0                  0                0   \n2                          0                  0                0   \n3                          0                  0                0   \n4                          0                  0                0   \n5                          0                  0                0   \n6                          0                  0                0   \n7                          0                  0                0   \n8                          0                  0                0   \n9                          0                  6                0   \n10                         0                  0                0   \n\naisle    baking ingredients  baking supplies decor  beauty  beers coolers  \\\nuser_id                                                                     \n1                         0                      0       0              0   \n2                         2                      0       0              0   \n3                         0                      0       0              0   \n4                         0                      0       0              0   \n5                         0                      0       0              0   \n6                         0                      0       0              0   \n7                         2                      0       0              0   \n8                         1                      0       0              0   \n9                         2                      0       0              0   \n10                        0                      0       0              0   \n\naisle    ...  spreads  tea  tofu meat alternatives  tortillas flat bread  \\\nuser_id  ...                                                               \n1        ...        1    0                       0                     0   \n2        ...        3    1                       1                     0   \n3        ...        4    1                       0                     0   \n4        ...        0    0                       0                     1   \n5        ...        0    0                       0                     0   \n6        ...        0    0                       0                     0   \n7        ...        0    0                       0                     0   \n8        ...        0    0                       0                     0   \n9        ...        0    0                       0                     0   \n10       ...        0    0                       0                     0   \n\naisle    trail mix snack mix  trash bags liners  vitamins supplements  \\\nuser_id                                                                 \n1                          0                  0                     0   \n2                          0                  0                     0   \n3                          0                  0                     0   \n4                          0                  0                     0   \n5                          0                  0                     0   \n6                          0                  0                     0   \n7                          0                  0                     0   \n8                          0                  0                     0   \n9                          0                  0                     0   \n10                         0                  0                     0   \n\naisle    water seltzer sparkling water  white wines  yogurt  \nuser_id                                                      \n1                                    0            0       1  \n2                                    2            0      42  \n3                                    2            0       0  \n4                                    1            0       0  \n5                                    0            0       3  \n6                                    0            0       0  \n7                                    0            0       5  \n8                                    0            0       0  \n9                                    2            0      19  \n10                                   0            0       2  \n\n[10 rows x 134 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th>aisle</th>\n      <th>air fresheners candles</th>\n      <th>asian foods</th>\n      <th>baby accessories</th>\n      <th>baby bath body care</th>\n      <th>baby food formula</th>\n      <th>bakery desserts</th>\n      <th>baking ingredients</th>\n      <th>baking supplies decor</th>\n      <th>beauty</th>\n      <th>beers coolers</th>\n      <th>...</th>\n      <th>spreads</th>\n      <th>tea</th>\n      <th>tofu meat alternatives</th>\n      <th>tortillas flat bread</th>\n      <th>trail mix snack mix</th>\n      <th>trash bags liners</th>\n      <th>vitamins supplements</th>\n      <th>water seltzer sparkling water</th>\n      <th>white wines</th>\n      <th>yogurt</th>\n    </tr>\n    <tr>\n      <th>user_id</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>3</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>3</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>0</td>\n      <td>42</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>4</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>0</td>\n      <td>2</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>3</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>6</td>\n      <td>0</td>\n      <td>2</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>0</td>\n      <td>19</td>\n    </tr>\n    <tr>\n      <th>10</th>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n    </tr>\n  </tbody>\n</table>\n<p>10 rows × 134 columns</p>\n</div>"
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:07:16.752028500Z",
     "start_time": "2024-07-15T03:07:16.737348200Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "(206209, 134)"
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#针对20万用户，有134个特征\n",
    "cross.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "data": {
      "text/plain": "pandas.core.frame.DataFrame"
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(cross)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:07:39.758896200Z",
     "start_time": "2024-07-15T03:07:39.750382900Z"
    }
   },
   "outputs": [],
   "source": [
    "# 进行主成分分析,那么大家还记得不？，保留90%的成分，实际特征数目减少了几倍，134--》27\n",
    "pca = PCA(n_components=0.9)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:07:42.304690800Z",
     "start_time": "2024-07-15T03:07:41.908070400Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "(206209, 27)"
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pca.fit_transform(cross)  #还记得fit_transform的作用不？\n",
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "outputs": [
    {
     "data": {
      "text/plain": "numpy.ndarray"
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(data)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-19T06:56:27.459954600Z",
     "start_time": "2024-04-19T06:56:27.441965500Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:10:41.062863400Z",
     "start_time": "2024-07-15T03:10:41.052842300Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "(500, 27)"
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把样本数量减少,为了下面画图方便，这里只取500个样本\n",
    "x = data[:500]\n",
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:10:55.166755Z",
     "start_time": "2024-07-15T03:10:55.151786400Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "array([[-2.42156587e+01, -2.42942720e+00, -2.46636975e+00,\n         1.45686388e-01,  2.69042476e-01, -1.43293209e+00,\n        -2.14067666e+00,  2.73803122e+00, -2.71431623e+00,\n        -1.74313529e+00, -1.13632718e+00,  6.73601069e-01,\n        -1.65070735e+00,  2.83802486e+00,  5.89384489e+00,\n        -7.84312891e+00, -4.84010146e+00, -3.22598697e+00,\n        -4.58007571e+00,  7.77403349e-01, -3.69912893e+00,\n         1.90721439e+00, -2.99538594e+00, -7.72922878e-01,\n         6.86800336e-01,  1.69439402e+00, -2.34323022e+00],\n       [ 6.46320806e+00, -3.67511165e+01,  8.38255336e+00,\n        -1.50975303e+01, -6.92093785e+00, -9.78375183e-01,\n        -6.01156653e+00, -3.78772465e+00, -8.18074883e+00,\n        -9.04086141e+00, -5.61352902e+00, -1.11325323e+00,\n         2.96702911e+00, -4.73123497e+00, -9.11472283e+00,\n        -2.14709471e-01,  1.29694031e+00, -7.37605505e-01,\n        -7.37401979e-01,  7.40042249e-01, -9.13382968e-02,\n         5.15128465e+00,  4.58481528e+00,  3.23789431e+00,\n         4.12121252e+00,  2.44689740e+00, -4.28348478e+00],\n       [-7.99030162e+00, -2.40438257e+00, -1.10300641e+01,\n        -6.72230096e-01, -4.42368029e-01, -2.82327194e+00,\n         6.28414012e+00, -6.51250946e+00, -2.14863353e+00,\n        -1.58525733e+00,  8.28813958e+00, -2.66151647e+00,\n        -4.50773836e+00,  1.19764737e+00,  6.93186953e-01,\n        -2.03281164e+00, -2.15050796e+00,  5.43473349e+00,\n        -3.60484175e+00,  4.28279419e+00, -4.45833616e-01,\n         3.03933749e+00,  1.46956568e+00,  2.94665603e+00,\n         1.77534453e+00, -4.44194030e-01,  7.86665571e-01],\n       [-2.79911291e+01,  7.55822760e-01, -1.92173207e+00,\n        -2.09188771e+00, -2.88231934e-01,  9.26177341e-01,\n        -8.27127057e-01, -6.14848545e-01,  3.78198802e-02,\n        -8.90672448e-01, -3.72088202e-01, -9.85771637e-01,\n         1.22495060e+00, -1.09639889e+00, -1.87159972e+00,\n        -7.10463022e-01,  6.75146395e-01, -2.62095591e-01,\n        -7.10689458e-02, -2.28812201e-01, -6.06522210e-01,\n         3.67203966e-01, -9.98709579e-01,  1.77374812e-01,\n         7.54646031e-01,  1.35817221e-01, -5.00043313e-01],\n       [-1.98963936e+01,  2.63722464e+00,  5.33228944e-01,\n        -3.67922837e+00,  6.12824980e-01, -1.62400824e+00,\n         3.93577123e+00, -2.00462740e+00,  1.00208961e+00,\n         3.08574683e+00, -5.50145774e-01,  2.87433706e-01,\n         4.11277359e-01, -2.64715919e+00,  6.28331685e-02,\n         1.65193116e-01, -4.81514320e-01,  1.64452919e+00,\n        -4.03108796e-01,  1.36899942e-01, -2.57981162e-01,\n         2.05400491e-01, -2.83754054e-01, -3.83840932e-01,\n        -1.93524072e-01, -6.45446295e-03, -2.08896003e-01],\n       [-2.64697723e+01,  4.68042570e+00,  4.64557305e-01,\n        -2.91452624e+00,  2.76753747e-01,  4.50849758e-01,\n         6.17645819e-01, -1.36215062e+00, -8.78502640e-02,\n         1.04054593e+00, -1.29224191e-02, -7.72674027e-01,\n        -1.05021630e+00, -3.84457799e-01, -6.50245651e-01,\n        -6.13803784e-01, -3.15793193e-01,  4.45930153e-01,\n        -3.11288889e-01,  2.86938163e-01, -1.07310998e-01,\n         6.65099620e-02, -1.56723355e-01, -1.59418792e-01,\n        -8.45564389e-02, -3.76327213e-01, -1.50797713e-01],\n       [ 6.43209799e+00, -5.20763684e+00, -5.37622059e+00,\n         5.03559798e+00, -1.55767996e+00, -7.73522520e+00,\n        -3.65929977e+00, -1.36194664e+01,  1.99127136e+01,\n        -3.87327108e+00,  2.10011278e+00, -2.67040732e+00,\n        -3.92512694e+00,  2.84756844e+00, -2.99126238e+00,\n        -4.13848691e+00,  4.59204143e+00,  2.66185949e+00,\n        -3.19197384e+00,  1.21530631e+00, -1.45136887e+00,\n         2.61171430e+00,  5.35780919e+00, -1.67350589e-01,\n         3.68044142e+00,  5.13104043e+00, -2.44269167e+00],\n       [-1.47587512e+01,  1.48684622e+01,  5.26133999e+00,\n        -2.72312827e+00, -4.41192804e-01,  1.77040069e+00,\n        -1.74849912e+00,  3.44199907e-01, -4.91075999e-01,\n         7.21488180e-01, -2.07273731e-01, -8.11480837e-01,\n        -1.49222116e+00,  6.44199120e-01, -7.40158282e-01,\n        -1.66319300e+00, -7.31046033e-01,  1.27234895e+00,\n        -7.04458786e-01, -1.38317595e-01,  4.33882990e-01,\n        -1.18706848e+00,  3.63571463e-01, -3.12302788e-01,\n         1.08780259e+00, -7.86800582e-01, -1.10628088e+00],\n       [-1.96448729e+01, -1.26189013e+01,  9.83832433e+00,\n        -5.96574917e+00,  3.25687125e+00,  2.32791585e+00,\n        -6.73245565e-03, -3.08230596e+00, -2.02937972e+00,\n        -2.19119257e+00, -5.76293826e-01,  2.98996645e+00,\n        -2.47415700e+00, -2.88953834e+00, -3.31359457e-01,\n        -1.21583350e-01,  1.46034805e+00, -1.54383264e+00,\n        -2.46265921e+00, -9.20833430e-01, -2.09191478e+00,\n         6.57037453e-02, -1.15878119e+00, -4.98714845e-01,\n         6.28224832e-01, -8.20937502e-01, -1.02610380e+00],\n       [ 4.06313864e+00,  1.54398182e+01,  2.77360399e+00,\n        -1.84179405e+00,  7.00877536e-01, -3.93387952e+00,\n         3.89695552e+00, -9.00116964e-01, -2.15791311e+00,\n         6.78592732e-01, -7.31465145e+00, -3.25791681e+00,\n        -4.73315648e+00,  1.19352292e+00, -1.62849209e+00,\n        -3.81328812e+00, -1.68239105e+00,  2.85570315e+00,\n        -8.93176379e-01, -2.53824756e+00, -1.41322471e-01,\n         4.26790007e-01,  4.48191235e+00, -3.74732433e+00,\n        -1.03797787e+00, -9.22191838e-01, -7.55201486e+00]])"
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:11:59.188680200Z",
     "start_time": "2024-07-15T03:11:59.169698900Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "407.1856341824979"
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:12:01.095896600Z",
     "start_time": "2024-07-15T03:12:01.076880Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "-144.56766126863667"
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:12:43.191558Z",
     "start_time": "2024-07-15T03:12:43.182054800Z"
    }
   },
   "outputs": [],
   "source": [
    "# 假设用户一共分为四个类别\n",
    "#n_clusters是分为几个类别，是主要的超参\n",
    "km = KMeans(n_clusters=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:12:45.319824Z",
     "start_time": "2024-07-15T03:12:45.125430500Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "KMeans(n_clusters=4)",
      "text/html": "<style>#sk-container-id-1 {\n  /* Definition of color scheme common for light and dark mode */\n  --sklearn-color-text: black;\n  --sklearn-color-line: gray;\n  /* Definition of color scheme for unfitted estimators */\n  --sklearn-color-unfitted-level-0: #fff5e6;\n  --sklearn-color-unfitted-level-1: #f6e4d2;\n  --sklearn-color-unfitted-level-2: #ffe0b3;\n  --sklearn-color-unfitted-level-3: chocolate;\n  /* Definition of color scheme for fitted estimators */\n  --sklearn-color-fitted-level-0: #f0f8ff;\n  --sklearn-color-fitted-level-1: #d4ebff;\n  --sklearn-color-fitted-level-2: #b3dbfd;\n  --sklearn-color-fitted-level-3: cornflowerblue;\n\n  /* Specific color for light theme */\n  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n  --sklearn-color-icon: #696969;\n\n  @media (prefers-color-scheme: dark) {\n    /* Redefinition of color scheme for dark theme */\n    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n    --sklearn-color-icon: #878787;\n  }\n}\n\n#sk-container-id-1 {\n  color: var(--sklearn-color-text);\n}\n\n#sk-container-id-1 pre {\n  padding: 0;\n}\n\n#sk-container-id-1 input.sk-hidden--visually {\n  border: 0;\n  clip: rect(1px 1px 1px 1px);\n  clip: rect(1px, 1px, 1px, 1px);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n\n#sk-container-id-1 div.sk-dashed-wrapped {\n  border: 1px dashed var(--sklearn-color-line);\n  margin: 0 0.4em 0.5em 0.4em;\n  box-sizing: border-box;\n  padding-bottom: 0.4em;\n  background-color: var(--sklearn-color-background);\n}\n\n#sk-container-id-1 div.sk-container {\n  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n     but bootstrap.min.css set `[hidden] { display: none !important; }`\n     so we also need the `!important` here to be able to override the\n     default hidden behavior on the sphinx rendered scikit-learn.org.\n     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n  display: inline-block !important;\n  position: relative;\n}\n\n#sk-container-id-1 div.sk-text-repr-fallback {\n  display: none;\n}\n\ndiv.sk-parallel-item,\ndiv.sk-serial,\ndiv.sk-item {\n  /* draw centered vertical line to link estimators */\n  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n  background-size: 2px 100%;\n  background-repeat: no-repeat;\n  background-position: center center;\n}\n\n/* Parallel-specific style estimator block */\n\n#sk-container-id-1 div.sk-parallel-item::after {\n  content: \"\";\n  width: 100%;\n  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n  flex-grow: 1;\n}\n\n#sk-container-id-1 div.sk-parallel {\n  display: flex;\n  align-items: stretch;\n  justify-content: center;\n  background-color: var(--sklearn-color-background);\n  position: relative;\n}\n\n#sk-container-id-1 div.sk-parallel-item {\n  display: flex;\n  flex-direction: column;\n}\n\n#sk-container-id-1 div.sk-parallel-item:first-child::after {\n  align-self: flex-end;\n  width: 50%;\n}\n\n#sk-container-id-1 div.sk-parallel-item:last-child::after {\n  align-self: flex-start;\n  width: 50%;\n}\n\n#sk-container-id-1 div.sk-parallel-item:only-child::after {\n  width: 0;\n}\n\n/* Serial-specific style estimator block */\n\n#sk-container-id-1 div.sk-serial {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  background-color: var(--sklearn-color-background);\n  padding-right: 1em;\n  padding-left: 1em;\n}\n\n\n/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\nclickable and can be expanded/collapsed.\n- Pipeline and ColumnTransformer use this feature and define the default style\n- Estimators will overwrite some part of the style using the `sk-estimator` class\n*/\n\n/* Pipeline and ColumnTransformer style (default) */\n\n#sk-container-id-1 div.sk-toggleable {\n  /* Default theme specific background. It is overwritten whether we have a\n  specific estimator or a Pipeline/ColumnTransformer */\n  background-color: var(--sklearn-color-background);\n}\n\n/* Toggleable label */\n#sk-container-id-1 label.sk-toggleable__label {\n  cursor: pointer;\n  display: block;\n  width: 100%;\n  margin-bottom: 0;\n  padding: 0.5em;\n  box-sizing: border-box;\n  text-align: center;\n}\n\n#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n  /* Arrow on the left of the label */\n  content: \"▸\";\n  float: left;\n  margin-right: 0.25em;\n  color: var(--sklearn-color-icon);\n}\n\n#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n  color: var(--sklearn-color-text);\n}\n\n/* Toggleable content - dropdown */\n\n#sk-container-id-1 div.sk-toggleable__content {\n  max-height: 0;\n  max-width: 0;\n  overflow: hidden;\n  text-align: left;\n  /* unfitted */\n  background-color: var(--sklearn-color-unfitted-level-0);\n}\n\n#sk-container-id-1 div.sk-toggleable__content.fitted {\n  /* fitted */\n  background-color: var(--sklearn-color-fitted-level-0);\n}\n\n#sk-container-id-1 div.sk-toggleable__content pre {\n  margin: 0.2em;\n  border-radius: 0.25em;\n  color: var(--sklearn-color-text);\n  /* unfitted */\n  background-color: var(--sklearn-color-unfitted-level-0);\n}\n\n#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n  /* unfitted */\n  background-color: var(--sklearn-color-fitted-level-0);\n}\n\n#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n  /* Expand drop-down */\n  max-height: 200px;\n  max-width: 100%;\n  overflow: auto;\n}\n\n#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n  content: \"▾\";\n}\n\n/* Pipeline/ColumnTransformer-specific style */\n\n#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n  color: var(--sklearn-color-text);\n  background-color: var(--sklearn-color-unfitted-level-2);\n}\n\n#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n  background-color: var(--sklearn-color-fitted-level-2);\n}\n\n/* Estimator-specific style */\n\n/* Colorize estimator box */\n#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n  /* unfitted */\n  background-color: var(--sklearn-color-unfitted-level-2);\n}\n\n#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n  /* fitted */\n  background-color: var(--sklearn-color-fitted-level-2);\n}\n\n#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n#sk-container-id-1 div.sk-label label {\n  /* The background is the default theme color */\n  color: var(--sklearn-color-text-on-default-background);\n}\n\n/* On hover, darken the color of the background */\n#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n  color: var(--sklearn-color-text);\n  background-color: var(--sklearn-color-unfitted-level-2);\n}\n\n/* Label box, darken color on hover, fitted */\n#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n  color: var(--sklearn-color-text);\n  background-color: var(--sklearn-color-fitted-level-2);\n}\n\n/* Estimator label */\n\n#sk-container-id-1 div.sk-label label {\n  font-family: monospace;\n  font-weight: bold;\n  display: inline-block;\n  line-height: 1.2em;\n}\n\n#sk-container-id-1 div.sk-label-container {\n  text-align: center;\n}\n\n/* Estimator-specific */\n#sk-container-id-1 div.sk-estimator {\n  font-family: monospace;\n  border: 1px dotted var(--sklearn-color-border-box);\n  border-radius: 0.25em;\n  box-sizing: border-box;\n  margin-bottom: 0.5em;\n  /* unfitted */\n  background-color: var(--sklearn-color-unfitted-level-0);\n}\n\n#sk-container-id-1 div.sk-estimator.fitted {\n  /* fitted */\n  background-color: var(--sklearn-color-fitted-level-0);\n}\n\n/* on hover */\n#sk-container-id-1 div.sk-estimator:hover {\n  /* unfitted */\n  background-color: var(--sklearn-color-unfitted-level-2);\n}\n\n#sk-container-id-1 div.sk-estimator.fitted:hover {\n  /* fitted */\n  background-color: var(--sklearn-color-fitted-level-2);\n}\n\n/* Specification for estimator info (e.g. \"i\" and \"?\") */\n\n/* Common style for \"i\" and \"?\" */\n\n.sk-estimator-doc-link,\na:link.sk-estimator-doc-link,\na:visited.sk-estimator-doc-link {\n  float: right;\n  font-size: smaller;\n  line-height: 1em;\n  font-family: monospace;\n  background-color: var(--sklearn-color-background);\n  border-radius: 1em;\n  height: 1em;\n  width: 1em;\n  text-decoration: none !important;\n  margin-left: 1ex;\n  /* unfitted */\n  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n  color: var(--sklearn-color-unfitted-level-1);\n}\n\n.sk-estimator-doc-link.fitted,\na:link.sk-estimator-doc-link.fitted,\na:visited.sk-estimator-doc-link.fitted {\n  /* fitted */\n  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n  color: var(--sklearn-color-fitted-level-1);\n}\n\n/* On hover */\ndiv.sk-estimator:hover .sk-estimator-doc-link:hover,\n.sk-estimator-doc-link:hover,\ndiv.sk-label-container:hover .sk-estimator-doc-link:hover,\n.sk-estimator-doc-link:hover {\n  /* unfitted */\n  background-color: var(--sklearn-color-unfitted-level-3);\n  color: var(--sklearn-color-background);\n  text-decoration: none;\n}\n\ndiv.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n.sk-estimator-doc-link.fitted:hover,\ndiv.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n.sk-estimator-doc-link.fitted:hover {\n  /* fitted */\n  background-color: var(--sklearn-color-fitted-level-3);\n  color: var(--sklearn-color-background);\n  text-decoration: none;\n}\n\n/* Span, style for the box shown on hovering the info icon */\n.sk-estimator-doc-link span {\n  display: none;\n  z-index: 9999;\n  position: relative;\n  font-weight: normal;\n  right: .2ex;\n  padding: .5ex;\n  margin: .5ex;\n  width: min-content;\n  min-width: 20ex;\n  max-width: 50ex;\n  color: var(--sklearn-color-text);\n  box-shadow: 2pt 2pt 4pt #999;\n  /* unfitted */\n  background: var(--sklearn-color-unfitted-level-0);\n  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n}\n\n.sk-estimator-doc-link.fitted span {\n  /* fitted */\n  background: var(--sklearn-color-fitted-level-0);\n  border: var(--sklearn-color-fitted-level-3);\n}\n\n.sk-estimator-doc-link:hover span {\n  display: block;\n}\n\n/* \"?\"-specific style due to the `<a>` HTML tag */\n\n#sk-container-id-1 a.estimator_doc_link {\n  float: right;\n  font-size: 1rem;\n  line-height: 1em;\n  font-family: monospace;\n  background-color: var(--sklearn-color-background);\n  border-radius: 1rem;\n  height: 1rem;\n  width: 1rem;\n  text-decoration: none;\n  /* unfitted */\n  color: var(--sklearn-color-unfitted-level-1);\n  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n}\n\n#sk-container-id-1 a.estimator_doc_link.fitted {\n  /* fitted */\n  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n  color: var(--sklearn-color-fitted-level-1);\n}\n\n/* On hover */\n#sk-container-id-1 a.estimator_doc_link:hover {\n  /* unfitted */\n  background-color: var(--sklearn-color-unfitted-level-3);\n  color: var(--sklearn-color-background);\n  text-decoration: none;\n}\n\n#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n  /* fitted */\n  background-color: var(--sklearn-color-fitted-level-3);\n}\n</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KMeans(n_clusters=4)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;KMeans<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.cluster.KMeans.html\">?<span>Documentation for KMeans</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>KMeans(n_clusters=4)</pre></div> </div></div></div></div>"
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "km.fit(x)  #开始训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:12:47.415925400Z",
     "start_time": "2024-07-15T03:12:47.400542800Z"
    }
   },
   "outputs": [],
   "source": [
    "#开始预测\n",
    "predict = km.predict(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:12:56.014062300Z",
     "start_time": "2024-07-15T03:12:56.004067200Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1\n",
      " 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0\n",
      " 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0\n",
      " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 0 0 0 1 0 0\n",
      " 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0\n",
      " 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0\n",
      " 1 0 0 0 1 0 0 0 0 2 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0\n",
      " 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0\n",
      " 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 1 0 3 0 0 0 1 0 0 0 0 0 0\n",
      " 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
      " 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0\n",
      " 0 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2\n",
      " 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 3 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\n",
      " 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "print(predict)  #预测得到的是每一个样本的类别"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T07:03:01.897395200Z",
     "start_time": "2024-04-19T07:03:01.883402400Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "array([0, 1, 2, 3])"
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "np.unique(predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:13:24.464643Z",
     "start_time": "2024-07-15T03:13:24.332682200Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 2000x2000 with 0 Axes>"
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 2000x2000 with 0 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 显示聚类的结果\n",
    "plt.figure(figsize=(20, 20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:14:28.581990300Z",
     "start_time": "2024-07-15T03:14:28.424656500Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<matplotlib.collections.PathCollection at 0x2c08092f770>"
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGdCAYAAAA8F1jjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABVz0lEQVR4nO3dd3hUVf7H8fedmVRCCi0hQCAg0hGUIiKoEEFFEUVsuLpYQdQVVJT1J5ZVce0dbAusDSvWFQsIikQEBFE60kJJ6EkgdWbO74+BkUDKAMnMDfm8nmcekntP7nwPSWY+ufeccy1jjEFERETEhhyhLkBERESkLAoqIiIiYlsKKiIiImJbCioiIiJiWwoqIiIiYlsKKiIiImJbCioiIiJiWwoqIiIiYluuUBdwrLxeL1u2bKF27dpYlhXqckRERCQAxhhyc3NJTk7G4Sj7vEm1DypbtmyhSZMmoS5DREREjkJGRgaNGzcuc3+1Dyq1a9cGfB2NjY0NcTUiIiISiJycHJo0aeJ/Hy9LtQ8qBy73xMbGKqiIiIhUMxUN29BgWhEREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxrWq/4JscZ3JWw855YDkh8UyIahjqikREJIQUVMQe8rbAz8Mg85u/tllOaHoldH0ZwmJCV5uIiISMgoqEXtEe+K4X7NtYcrvxwIZ3IG8D9JkJDmdIyhMRkdDRGBUJvTWvwN71YNyH7zMe2PYDbPky6GWJiEjoKahI6P35BuAte7/lhLWTg1WNiIjYiIKKhF5BVvn7jQfyNwenFhERsRUFFQm9qOTy91tOiE4JTi0iImIrCioSei2uB6yy9xsPtLg2aOWIiIh9KKhI6J1wI8S2Aqu0SWgOaNjf9xARkRqnSoOKx+PhvvvuIzU1laioKFq0aMG//vUvjDH+NsYYxo0bR8OGDYmKiiItLY3Vq1dXZVliN2G1Ie1HaHwhJX4kHeHQcjj0/gQsZWoRkZqoStdR+fe//82ECROYMmUK7dq1Y8GCBQwbNoy4uDhuu+02AB5//HGef/55pkyZQmpqKvfddx/9+/dn2bJlREZGVmV5YieR9aDXh5C3CXYuAIcL6p0GEXVCXZmIiISQZQ4+vVHJzj//fBITE3njjTf82wYPHkxUVBRvvfUWxhiSk5O54447uPPOOwHIzs4mMTGRyZMnc/nll1f4HDk5OcTFxZGdnU1sbGxVdUVEREQqUaDv31V6Pv20005jxowZrFq1CoDffvuNOXPmcO655wKwbt06MjMzSUtL839NXFwc3bt3Jz09vdRjFhYWkpOTU+IhIiIix6cqvfRzzz33kJOTQ+vWrXE6nXg8Hh555BGGDh0KQGZmJgCJiYklvi4xMdG/71Djx4/nwQcfrMqyRURExCaq9IzK+++/z9tvv80777zDr7/+ypQpU3jyySeZMmXKUR9z7NixZGdn+x8ZGRmVWLGIiIjYSZWeUbnrrru45557/GNNOnTowIYNGxg/fjzXXHMNSUlJAGRlZdGwYUP/12VlZdGpU6dSjxkREUFERERVli0iIiI2UaVnVPLy8nA4Sj6F0+nE6/Xd1yU1NZWkpCRmzJjh35+Tk8O8efPo0aNHVZYmIiIi1UCVnlG54IILeOSRR0hJSaFdu3YsWrSIp59+mmuv9a0yalkWt99+Ow8//DAtW7b0T09OTk5m0KBBVVmaiIiIVANVGlReeOEF7rvvPm6++Wa2bdtGcnIyN910E+PGjfO3GTNmDPv27ePGG29kz549nH766UyfPl1rqIiIiEjVrqMSDFpHRUREpPqxxToqIiIiIsdCQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbKvKg8rmzZu56qqrqFu3LlFRUXTo0IEFCxb49xtjGDduHA0bNiQqKoq0tDRWr15d1WWJiIhINVClQWX37t307NmTsLAwvvrqK5YtW8ZTTz1FQkKCv83jjz/O888/z8SJE5k3bx61atWif//+FBQUVGVpIiIiUg1YxhhTVQe/5557+Omnn/jxxx9L3W+MITk5mTvuuIM777wTgOzsbBITE5k8eTKXX355hc+Rk5NDXFwc2dnZxMbGVmr9IiIiUjUCff+u0jMqn332GV26dGHIkCE0aNCAzp0789prr/n3r1u3jszMTNLS0vzb4uLi6N69O+np6aUes7CwkJycnBIPEREROT5VaVBZu3YtEyZMoGXLlnz99deMGDGC2267jSlTpgCQmZkJQGJiYomvS0xM9O871Pjx44mLi/M/mjRpUpVdEBERkRCq0qDi9Xo5+eSTefTRR+ncuTM33ngjN9xwAxMnTjzqY44dO5bs7Gz/IyMjoxIrFhERETup0qDSsGFD2rZtW2JbmzZt2LhxIwBJSUkAZGVllWiTlZXl33eoiIgIYmNjSzxERETk+FSlQaVnz56sXLmyxLZVq1bRtGlTAFJTU0lKSmLGjBn+/Tk5OcybN48ePXpUZWkiIiJSDbiq8uCjRo3itNNO49FHH+XSSy/ll19+4dVXX+XVV18FwLIsbr/9dh5++GFatmxJamoq9913H8nJyQwaNKgqSxMREZFqoEqDSteuXZk2bRpjx47loYceIjU1lWeffZahQ4f624wZM4Z9+/Zx4403smfPHk4//XSmT59OZGRkVZYmIiIi1UCVrqMSDFpHRUREpPqxxToqIiIiIsdCQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsS0FFREREbEtBRURERGxLQUVERERsK2hB5bHHHsOyLG6//Xb/toKCAkaOHEndunWJiYlh8ODBZGVlBaskERERsbmgBJX58+fzyiuv0LFjxxLbR40axeeff84HH3zA7Nmz2bJlCxdffHEwShIREZFqoMqDyt69exk6dCivvfYaCQkJ/u3Z2dm88cYbPP300/Tp04dTTjmFSZMmMXfuXH7++eeqLktERESqgSoPKiNHjmTAgAGkpaWV2L5w4UKKi4tLbG/dujUpKSmkp6dXdVkiIiJSDbiq8uBTp07l119/Zf78+Yfty8zMJDw8nPj4+BLbExMTyczMLPOYhYWFFBYW+j/PycmptHpFRETEXqrsjEpGRgb/+Mc/ePvtt4mMjKy0444fP564uDj/o0mTJpV2bBEREbGXKgsqCxcuZNu2bZx88sm4XC5cLhezZ8/m+eefx+VykZiYSFFREXv27CnxdVlZWSQlJZV53LFjx5Kdne1/ZGRkVFUXREREJMSq7NJP3759+f3330tsGzZsGK1bt+buu++mSZMmhIWFMWPGDAYPHgzAypUr2bhxIz169CjzuBEREURERFRV2SIiImIjVRZUateuTfv27Utsq1WrFnXr1vVvv+666xg9ejR16tQhNjaWW2+9lR49enDqqadWVVkiIiJSjVTpYNqKPPPMMzgcDgYPHkxhYSH9+/fn5ZdfDmVJIiIiYiOWMcaEuohjkZOTQ1xcHNnZ2cTGxoa6HBEREQlAoO/futePiIiI2JaCioiIiNiWgoqIiIjYloKKiIiI2JaCioiIiNiWgoqIiIjYloKKiIiI2JaCioiIiNiWgoqIiIjYloKKiIiI2JaCioiIiNiWgoqIiIjYloKKiIiI2JaCioiIiNiWgoqIiIjYloKKiIiI2JaCioiIiNiWgoqIiIjYloKKiIiI2JaCioiIiNiWgoqIiIjYloKKiIiI2JYr1AWIyPEhe2M2v7z4C8s+WEbRviISOyTSdWRXWl/UGsuyQl2eiFRTCioicswy0jN4q99bFOcXYzwGgPWz17Nu5jo6XNWBi6ZchOVQWBGRI6dLPyJyTNwFbt694F2K8/4KKYD/49/f+p35E+aHqjwRqeYUVETkmCz9YCn5O/MxXlN6Awt+fuZnjCljv4hIORRUROSYZPyUgcNVzkuJgd1/7iZ/V37wihKR44aCiogcE8thQQDDTzRGRUSOhoKKiByT1L6peIu9Ze63HBYNOjQgKiEqiFWJyPFCQUVEjkmrga2IS4nDcpZ+xsR4DT3H9AxyVSJyvFBQEZFj4gxzMnT6UKLrRZe4BHRg3ErPu3vSYWiHEFUnItWd1lER29mVv4s3f3uTlTtXUju8NoPbDqZbo26hLkvKUb9NfW5ZeQu/TfnNt+Db3iIST0qky4guNO7eONTliUg1ZplqPmcwJyeHuLg4srOziY2NDXU5cowmL57M8C+GU+QpwuVwYTC4vW7Obn42H176IbER+h6LiBwPAn3/1qUfsY2vVn/FsE+HUegpxGAo9hbj9roBmLluJpd9eFmIKxQRkWBTUBHbeOiHh3BYpf9IeoyH6Wums2jroiBXJSIioaSgIrawbd82ft70M15T9jRXl8PFx8s/DmJVIiISagoqYgv7ivZV2MbCYm/R3iBUIyIidqGgIrbQsHZDYsJjym3j9rppW79tkCoSERE7UFARW4h0RXJd5+twWs5S91tYRIdFc0WHK4JcmYiIhJKCitjGA2c+wIl1TzwsrDgtJ5ZlMXnQ5ArPuoiIyPFFQUVsIz4ynrnXzWXUqaOIi4jzbz+r2Vl8f833XNL2khBWJyIioaAF38SWij3FbM/bTq2wWsRFxlX8BSIiUq0E+v6tJfTFlsKcYSTXTg51GSIiEmK69CMiIiK2paAiIiIitqWgIiIiIraloCIiIiK2paAiIiIitqWgIiIiIraloCIiIiK2paAiIiIitlWlQWX8+PF07dqV2rVr06BBAwYNGsTKlStLtCkoKGDkyJHUrVuXmJgYBg8eTFZWVlWWJSIiItVElQaV2bNnM3LkSH7++We+/fZbiouL6devH/v27fO3GTVqFJ9//jkffPABs2fPZsuWLVx88cVVWZaIiIhUE0G918/27dtp0KABs2fPpnfv3mRnZ1O/fn3eeecdLrnEd8O5FStW0KZNG9LT0zn11FMrPKbu9SMiIlL9BPr+HdQxKtnZ2QDUqVMHgIULF1JcXExaWpq/TevWrUlJSSE9Pb3UYxQWFpKTk1PiISIiIsenoAUVr9fL7bffTs+ePWnfvj0AmZmZhIeHEx8fX6JtYmIimZmZpR5n/PjxxMXF+R9NmjSp6tJFREQkRIIWVEaOHMkff/zB1KlTj+k4Y8eOJTs72//IyMiopApFRETEblzBeJJbbrmFL774gh9++IHGjRv7tyclJVFUVMSePXtKnFXJysoiKSmp1GNFREQQERFR1SWLiIiIDVTpGRVjDLfccgvTpk1j5syZpKamlth/yimnEBYWxowZM/zbVq5cycaNG+nRo0dVliYiIiLVQJWeURk5ciTvvPMOn376KbVr1/aPO4mLiyMqKoq4uDiuu+46Ro8eTZ06dYiNjeXWW2+lR48eAc34ERERkeNblU5Ptiyr1O2TJk3i73//O+Bb8O2OO+7g3XffpbCwkP79+/Pyyy+XeennUJqeLCIiUv0E+v4d1HVUqoKCioiISPVjy3VUREREpPrIzITVq+GgBeWDTkFF5FD5W2HjB7DhPdi3IdTViIgE3TffwGmnQcOGcOKJUK8e3HQTbNsW/FqCMj1ZpFoozoX5I2DDVDCe/RstaDQQur8OkfVCWp6ISDC8+y4MHQoHDzMtKID//McXYObNgwYNglePzqiIAHiL4fv+h4QUAANbvoAZZ4A7hOc+RUSCIDcXrr8ejAGvt+Q+txs2bYJx44Jbk4KKCMDGj2BH+iEhZT/jgezlsHZy0MrZvW43G37cwI6VO4L2nCIiU6dCfn7Z+91umDIluGNWdOlHBGDtJHy53Vt2mz/fgBNHVmkZWxZs4evRX7Pxx43+bUmdkzj7ibNp3rd5lT63iMiqVeByQXFx2W0KCmDLFmjZMjg16YyKCED+ZsoNKRjI31KlJWz+ZTOTek0iY27J+1dl/pbJW/3eYtWXq6r0+UVEatc+/JJPWe2CRUFFBCC6MeAsp4EFUY2qtIT/3fI/PEUejOeQpY28vttRfHHTF3g9AbyCiIgcpUsuAU8pV8APcDh8s4ECXJO1UiioiAA0vxYo57cT4ITrq+zpty3dxpb5WzDeMtZfNJC7OZd1M9dVWQ0iIm3bwpAhvkBSGmPggQeCWpKCiggATS6G+qeDVcpZFcsJ8e0h9Zoqe/o96/ZUajsRkaM1ZQoMHuz72OmEsDDfVOXoaHjrLTj77ODWo8G0IgAOF5z5FSy8Dda9CcZ9YAc0vgi6vQKu6Cp7+qi6UZXaTkTkaEVFwfvvw/Ll8OGHkJPjW/Tt8suDOzblAN3rR+RQBdtg+09gvFDvVIiu2rEpAMZreLbZs+Rk5JTZJjwmnDuz7iQsOqzK6xERqWq614/I0YpsAE0ugpTBQQkpAJbDIu3faeW2OeOBMxRSRKTGUVARsYkOV3Rg4BsDiYiNAMBy+tavdkW66PtYX3qM7hHK8kREQkKXfkRspjivmD8+/YNtGduo36A+bS9qS2RcZKjLEhGpVLr0I1INLdu+jGHTh9F9TXfOyT+HPpl9uG/efezI01L6IlIz6YyKiE2kZ6TT9799KfYW4/a6/dudlpMmcU34+bqfSYxJDGGFIiKVJ9D3b01PFrEBr/FyxUdXUOQpwnPIjRE9xsOmnE2M+noU7wx+J0QVBl/+7nwWT1rM0g+WUpRbROJJiXQd0ZWU01NCXZqIBJHOqISI1+Ml46cM8nbkEdc0joYnN8SyrFCXJSHy9ZqvOeftc8pt43K42HrHVupF1wtSVaGzfdl2ppw1hbwdeRivYV/0Pn7t+iu/t/0dq75F99bdGdF1BP1b9NfvjUg1pTMqNrbk7SV8d/d35G7O9W+r364+A14eQNPeTUNYmYTKkqwlOC3nYWdTDub2ulm1c9VxH1S8bi9vn/s2eTt9ISUzMZMp10yhILIAYxmw4MtVX/LZqs+4/uTreeX8V3BYGm4ncrzSb3eQLZq0iGlXTSsRUgB2LN/Bf/v+l41zNoaoMgml6LBovKbiGw5GuY7/lWlXfraS7I3ZGI/B4/Dw9tC3fSHF4QspAJ7992V6/dfXeXXhqyGsVkSqmoJKEBXnF/P1qK9L3We8BuM1fD269P1yfDv/xPMrbNOodiM6JnYMQjWhtW7mOhwu30vTylYryY3N9YWUUlhYPJX+FNX8CraIlENBJYhWfbGKwuzCMvcbr2HL/C3sWKmpqDVN0/imXNnhynIvYfxf7//D6SjlponHmYNDx/pm63F4yv4/MRjW7FrDtn3bglGaiISAgkoQ5W7OxXJUPPDv0MtC1dHCLQt5+IeHGff9OD5f+Tkeb9ljL8TntQteY0DLAYBv4KzTcuK0nFhY3Nf7Pm465aYQVxgcKT1T8Lp9l8Eso4GyIjWdBtMGUUxSDMZb8SnqmKSYIFRTNbbv286QD4Ywe8Ns35usZeH2umkc25iPL/2Yro26hrrEgC3YsoBXF77K8h3LSYhM4PL2lzO4zWAiXBFV8nxRYVF8dsVn/LL5F975/R125u8kNT6VYZ2GkZqQWiXPaUdtBreh1qha5O3Mo+mGpsw7dV6ZbS0sWtRpQYNaDYJYoYgEk6YnB1HRviKeSnqKor1FpTewILFjIjctuqlaTrl0e910fa0rv2f9ftjsFaflJDosmsXDF9M8oXmIKgyMMYbRX4/m2XnP4nK4cHvdOCwHXuOldb3WzLx6Jg1rN6z6Qrxu2PI/2LMEnFHQaCDEtqz657WBzfM382bam+Tn5/PsLc+SW7vscSoTBkxgeJfhQa5QRI6VltC3ofBa4fR5tE/pOy2wLIt+T/arliEF4LOVn7E4c3GpU2w9xkO+O59n0p8JQWVHZuKCiTw771kA/wqxB2bkrNm1hkHvDar8wZt7lsKC2+DbXvBtb/imF3wQBz9cCL8/CIvGwBcnwo9DwL2vcp/bhhp1bcTNy27mjDFncPOPNxNVGFXiMpDT8o3VueHkG2rMJTGRmkpnVEJg/oT5zPznTAr2FPi3xaXEMWDiAFqeW33/Yr78w8v5cNmH5a4FkhCZwK67dwWxqiPjNV6aP9ecDdkbym0399q59GhSSXczXvZvWHwPWC4w7goaO6BhfzjzS6imgfZobN+3ndd/fZ33l75PTlEOHRM7MqLLCM5ufna1DfaB2rMHZs2CwkLo1AlatQpxQSKVRAu+2VjXEV3pfG1n1n671r8ybbMzmgU00NbOdufvLjekAOwt2hukao7M3qK9fLX6K1buXFlhSHE5XHz959elBxVjYMuXsHoiZC+FsDhoejmccANE1D28/abPfCEFAggpAF7Y+hVs/hwaDwyg/fGhfq36jO01lrG9xoa6lKApLoZ77oGXX4aCv/6m4cwzYdIkaNYsVJWJBJeCSoi4IlyceP6JoS6jUp1Y90Rmrp9Z4oZ6B7OwSI2316BQYwxPzH2Ch2Y/xL7iwC6pWFil99HrgfSrYcM7YDnhQGjb8zssfxLa3AXRyVDvNKjdwrdv2eP4rsBWvNhbCXOvgoFrIdLeq9Su2LGCl355ie/WfYcxhr6pfRnZbSRt67cNdWm2ZgxcfTW8957v44PNmQM9esCiRZCUFJr6RIJJY1Sk0lx/8vVlhpQDRnQdEaRqAvPIj49w93d3BxxSAIq9xXRr1O3wHSufhQ3v+j4ucWbJC0U74bd7fEHm8xPg+/Ng3wbY8RNHHFIA3Lnw6ygosO/6Ie/+/i7tX27PxIUTWbFjBSt3ruTVX1+lw4QOvPnbm6Euz9bmz4epUw8PKQBuN2zfDk8/Hfy6REJBY1SkUo35dgxPzH3isO1Oy0nXRl2ZefVMosLssQz87vzdJD2VRJGnjFlYpXBaThrWbsj6f6wvufia1wOfNoX8zYEdyHJBrVTYu/oIqy7lOClD4JTnILL+sR3rECt3rOTP3X+SEJlAt0bdsCwr4HvqrNixgvYvty/zUqDDcvDb8N9o36B9pdVb5Cnif6v/x4Y9G6gXXY8LWl1AbET1fE0YORJefdUXSsqSkAC77DvcS6RCGqMiIfHvtH/TIqEF4+eM94/1qB1emxtPuZEHz3zQNiEF4MN54yk+wpASEx7Dp5d/evgKsXkbAw8p4BuPsnc1hNeBomN4tzFu2Pg+7FoA/X+B8PijP9Z+izMXM/LLkczdNNe/7cD07NiIWK456RruPO1OUuJSyjzGy/Nf9g1yLePPIIfl4MVfXmTi+ROPuV6A95e+z4gvR7Arf5e/1ihXFPefcT9jeo6pdgNut2wpP6QA7N7ta+PSq7gc5/QjLpXKsixu6nITN5xyA2t2raHIU0SLhBa2CigArHubbX88gROoaAhrpCuS+Ih4hnYcyq3dbqVpfGl3uD7KN8JjCSkHGA/s/RNWPg8dxh3ToX7P+p2e/+lJobvkrR4OTM/OKcxhwvwJvLXkLX4c9iPtGrQr9Tjfrf2u3MuAbq+b79Z+d0y1HvD5ys+5/MPLMftT0YFa89353DPDN1D57tPvrpTnCpbkZF8AqeiMikKK1AQaoyJVwmE5OLHuibRv0N5+IaVgG8wbRhNXxSEFYPWtq9l651ae7PdkGSEFiG4C0Y0rtcwjYryw5pVjPsyYb8dQ6C4sd/aW27jJKczhsg8vK3M9GVPWqZSD21TCVWdjDHd9e1e5bR6c/SC5hdXrthTXXFN+SHE64frrg1ePSCgpqEi1tzF7I0/NfYr/m/l/TFo0qeIp0GsngdfDxTEQXc6JEKflJC01jcaxAQQQhxNaj+aoz6xUhvwtpY6+NMbw+aIJ3DSpPR0ecxH5cAQD3x3IDxt+KNFua+5Wvv7z6wqnmINvAb+l25eSvim91P19U/vicpT9577L4SKteVqFz1ORJVlLWLlzZbnBKN+dz2crPzvm5wqmrl3h8stLXyrH5YL69WH06ODXJRIKCipSbRV7ihn+xXCaPduMMd+N4fGfHue6z64j6cmk8meV7F6MAWIc8FQZs3udQJgVxuNnPx54Qa3+ASmXHUkXyuQ18N0++HKf7+OAuGIOe2cze5ay7IOmDFh2M69ELOX3FA/zGxVhbf6SMyefyasLX/W33ZK7JaAzIQdYWPy69ddS943sOtJ/CaY0Hq+HW7rdEvBzlWVHXsV3GndYjoDa2YllwX//6wsjkZEl9/XqBenpmposNYeCilRbt02/jdd+fQ2DwWu8FHuLMRj2Fe/j6k+u5otVX5T+hc4ozP7l2IfHw38TofEhf/yfHAHjlt9L54adAy8oZyVsm3VUfTmUBRQAF26BfoGO0XXvg+/6+tZmKdgB2ctxf9WF1sUZHLyWYNtwmNbQy6UxhhFfjmDNrjWAb1G1I2EwRDhLv0Fjm/ptmDJoCg7LUeLMisvhwsLiPxf+hw6JHcgpzGHy4smM/3E8kxdPJqcw54hqKG9A7wFe4yVzXyYZ2RlHdOxQCwuDJ5+EzEyYNs03XXnFCpg5U4u9Sc2i6clSLW3K2UTKMyllngGwsOiY2JHFwxcfvjNjGvx4cYlNHgPzCmCXB5o6IWJFSz5+7Vru2XNPYAV5inzro+RvOWQNlaPjNvCvXfDxXphYH3pGH8lXW+CIgOgmmNzVpV4+8BrI9kLj9Q5u7j6aJ/r5ppT3fKMnP2/+udyzIX89i8WG2zfQJK5JmW2WblvKS/Nf4ts/v8VgSGuexsiuI+mQ2IFnf36WsTPGUuguxOlw4vF6iHBF8GifRxnVY1TAve35Rk/mbZ5X4SUrC4uBrQYy8fyJJMXodIRIqGl6shzXPl7+MZZllTuY87es31izaw0n1Dmh5M5GF7BnTxK1a2fhdPq+3mnBaVH7h3gYmPz56Uc2pXXTNMirnL/YD3RpXgH83AQijnjYiwFvAewtPaQAOCxIcMJHSV72Zb0NG0+FxgN5LO0x+vy3D8aYci8DOS0nl7W7rNyQAtCuQTteHvDyYdsnLpjIqK//CiMHZggVuAsY/c1oIl2RAS8O+Py5z9NrUi+KPEXlhhWD4cvVX9LzPz1ZcMMCEqISAjq+iISWLv1ItbSnYI//DrrlyS7IPnyjw8WK7OfYneW7947H7cDrsfB6LbweB9MmXsSmP1NJ7XsEy/1v/ca3+FolKTTwZD1fSHFZvjMgVXHuMy0aLnRkwpxL4LPm9IqL58srvyxzAPGB//O05mm8esGrpbapSJGniHtn3ltum//7/v8CXojvlORT+HHYj5za+NQK27q9btbvWc9L818K6NgiEno6oyLVUss6LSn2Fpfbxmk5y5xO3H7YeTx/wq00b7OMVp1X4gp3k7UhiUU/dCIvJwbwcurtFb/x+Rk3Za5udoQsC6KB9hGw0wPjd8FHe2F6I2gR5gsulcV3rP1152+FGX3od/4K1v1jHTPXzWTt7rVkF2Szbs86tu7dSr3oelzV8SrOaHrGUS+iNmv9LHbll79+zK78XcxcN5NzTjgnoGOeknwKc66dw+qdq7n1q1v5bu13ZZ5d8Rovry18jf/r/X9HXLuIBJ+CilRLF7W5iPjIeLILsku9ROFyuLio9UXUiy59Wk9MUgyXfnQl7w16j1WL2mI8vmM4XL4bBJ7z/DmknF7xQE2/eqfCusq7f41lwQ43dN8EG4rBA3TPgAfrwDWxEO/0jatxVuZsaOOBwl3w5xs4247h7BZnV+LB/1JRSDnSdgdrWbclHuOpcLzK1r1bj/jYIhIaCipSLUW6Inntgte49INL/UumH+CyXCREJlQ4tfiE/icwcsVIFr6ykFWfr8Lr9pLSK4WuN3clqdMRDrZsdhUsGuObeVNJZ1aiHZDggM0WXBYDd8bDSRH4Z/BY+C4HVe7q8F7Y8B7EtYUd88DhgqR+viBWSU8U6B20myc0P6rjN4xpiMvhKndl3LICrIjYj8aoSLV1SdtL+Pqqr+ma3NW/zeVwcUnbS5h/w3yaxTer8BjxTeM59YFT2TtxL08Nf4pBjQfRenprbvnfLazbvS7wYsJqQ+9p4AivtLEq4RZ83Qi2psLbSdA5khLTjB2VGlAOsmcJzL4Alo6H3/8F354GX7b3zZYqPPYl/7s16kbreq3LvMGhw3LQul5rujfqflTH/1vHv5UbUpyWk+s6X3dUxxaR4NP0ZDkuZGRnsKdgD41jGx/RbI6cwhzOmnwWi7MWlzwr43AR5Yri+2u+55TkU/zbPV4PC7YsILcol5Z1Wh4+BiZnJax8DlZPpLLOrNiKFQbNhsIpT0N4AptzNpO+KR0Li54pPQOe9jtn4xz6TOmD13hLXKZxWk4cloPvrv6O3k17+7d7vB7+t/p/vLf0PXbl7+KEOidww8k30CGxw2HH9hov5751Lt+t++6wadYuh4sGtRqw6KZFNKjV4Cj/E0SkMgT6/q2gIjVX9gpe+34U09Z8w/d5XgoO+U1wWk6axDXhz9v+xGE5eP3X17l/1v1syd0C+Nbl6NeiHy+e9+LhU6A/ToKCrCB1JMgsJ56YlgzLb83bKz7zhwGn5eSy9pcxYcAEYiMq/l38edPP3PXtXczZOMe/7fSU03k87XF6NOnh37YrfxfnvHUO87fMx2k58RiP/9LOnT3u5PGzH/cP7F29czXj54zn7SVvU+Q9fNZQ75TeTLloSkBn20SkaimoiJQlZyXMux62//UGme2Bx3b7Hof6auhXLMlawt3fHX4HXqflJC4yjgU3LCA14aCxF7MHwZYvylz8zW1gUzE0Cz/WzhydYx3b4jVw706Lx3aXfPlwWk7/dOFwZ2CdW79nPVtzt9KwdsNSA0S/N/sxc93MMgfIvnTeS9zc9WYWbV3EGZPPIN+dX+LSj4VFQmQCHwz5gD7N+wTeSRGpUoG+f2uMitQse9fBNz1gR8mb6cU5YXw939olB3NZTmatn1Xmuh8e4yGnMIdxs8aV3NHq1nJXqHUAA7dCprtq1kepiGUd+/PeEHf4ATzGwy+bf+GDpR8EfJxm8c3o0aRHqSFlSdYSvl37bbmzeB6b8xhuj5srPrqCvOK8w8anGAw5hTm8MP+FgGsSEftQUJGa5Y9/QXFOmSFiVDykHjQW1hgPS7OWlBjr0DcKnq0HExrATXEQadxM/WMquYW5f31hUl9o5ws3B99UsHj/x//YDr8XwaO7KnvWTuCO5XkdFjQpY8yww3LwxqI3juh4xphSVxn+avVXFS7sl5GTwTu/v8PKnSvLDDRu4+azlZ/5L9uJSPWhoCI1h6cQ1r9d7pkOL/C3g85AeoAE906clpMkJyxoAt81hhHxcG0svFwftjaHc6PcbNu3reTBTnoYT71e/FQA+V7I88JX++DMTfDi/gVzX8iGZ0u53FQd7Cnjv9FrvGzOqfhOim6Pm3tn3EuzZ5vhfMhJ+L/COfetc5mxdoa/TZGnKKCF5ZZtX4ZF+e28xsuy7csqPJaI2IstgspLL71Es2bNiIyMpHv37vzyyy+hLkmOR0W7oZQBlgfzAo32nylwAv2jobN7PbfHFfNHU+i8/2bB4Zbv4bAg2oKPGkL9gg0ljpW5N5MRmUX03gTRf0KtP+HCrTA7v+Rz3rkDJpey0n+wHDiRke8N/HKQ28CU3NL3OSwHjWIblfv1P6z/gYTHE3h0zqNsyN6AweA2bqb/OZ20N9N47ufnAN+Ks+VNNQaIDosmJb7sG1QeLMoVVWEbEbGXkAeV9957j9GjR3P//ffz66+/ctJJJ9G/f3+2bdtW8ReLHInweHCEldvEAWzb/77YJcIXQG6P2sb4ulDXWfraJQ4LLMsi9s+J/m2rdq6i44SOvLGu4tBtAZuP/YbLR+3ACYswyzehuqKw4sEi2wvP7il9v9d4y12nZEnWEtLeTGNv0d4y24z6ehRLty2lf4v+pMSllHn558CaKBe1vqjCS0T1ouvRtVHXctuIiP2EPKg8/fTT3HDDDQwbNoy2bdsyceJEoqOj+c9//hPq0uR444yElMvKXZDNZcFuL3yRDD81gVoOX5CoaKl6FwY2TSO/aB9PzX2KDhM6sD1vO94A/sp3A6dGHllXqoJr/xmiYnzjag7cCPHAY/9dBlheaOiz2cVWz+EvH07LSbfkbgxpN6TM53nkh0cqvE+ThcXEBRNxOpx8dOlHRIdF43KU/L45LAcnJZ3EI30eoWHthgzrNKzMReQA7ul5T8AzkUTEPkK6hH5RURELFy5k7Nix/m0Oh4O0tDTS09NL/ZrCwkIKCwv9n+fk5FR5nXIcaT8ONn/mW+q+jLEqT9U/ymMbN/3f7MOcTfMDugwBvstLzcOgj02uSBQbeCUbtrihW6TvEs/CQijwAhbML4C5BeCLVyU5LSeXtruUiedPLDMQFLgL+HDZhxXW4cXLvM3zAOiS3IXFwxfzdPrTvLXkLXKLcmkW14zhXYYzsttIosOiAXjxvBfZVbCLj5d/jMvhwhiDZVm4vW7u6HEHo3uMPtr/FhEJoZAGlR07duDxeEhMTCyxPTExkRUrVpT6NePHj+fBBx8MRnlyPIptCWk/ws/XwO7FlXroXR6LuZsXBhxSHECcAz5uGLqZP4dy4bvk1XN74OvqWlj0SunF1Eum0rB2w3LbLtu2DC/ectscEOn66zRT84TmvHjei7x43otlto9wRfDRpR8xf/N83v79bbbnbSclNoVhnYdxYt0TA+uMVDseD3zyCUycCKtXQ5068Le/wbBhEB8f6uqkMlS7mxKOHTuW0aP/+ssoJyeHJk2ahLAiqXYSOsK5i2DXr7DnD7AcsPlzyPio3BlB5TEGnt5tKrxrrwtfQKnlgKG1YWwdSLbRb6FlQY8oaB/umz4dCIPhh40/kFOYU25QmZsxl35v9gu4lvNbnh9w24N1Se6isSg1RHExXHwxfPEFOJ2+0LJxIyxeDM88A7NnQ2pg98AUGwvpS2S9evVwOp1kZZVcajwrK4ukpNLvGRIREUFEREQwypPjXZ2TfQ+A1Ksgf6tvtVrjhfiTYPrJ4Mkv/xj75Rl4ck/5bRzAmAR4oK7vcxf2OZNyqBmNYFkRvJED7+aWdqGnJKfl5L2l7zHujHGl7s8vzmfguwPJdwf2/wlw3cmB3zhw/Z71PDX3Kf675L/kFObQqHYjhncZzm3dbwtoOX+pnv71L/jf/3wfe/b/jXBgMPjWrb4Q8+uv9v09k8CEdDBteHg4p5xyCjNm/LVugtfrZcaMGfTo0aOcrxSpAlENIWUINL0M4lpD82FQwUySA7LcUFjBtRIL35TmsP2PUL94GgPv50L7DXBaBjy323crAYD6Ljg9Cv6bBFMDuM+gw3KwK7/sOyt/sOwDdubvPOwmgWXpm9qXutF1A2r7W+ZvdJrYiYkLJ5JT6Buztjl3M/fPup9TXz+13Lqk+ioshBdeAG8ZP1Jut+/Myty5QS1LqkDIZ/2MHj2a1157jSlTprB8+XJGjBjBvn37GDZsWKhLk5qu478g5oSAwkpqGLQIo9wlxzzAgFqVVt0xKwbWFcPSIkgvgFE7oM0GWL3/ks+BmU5p0RWfevUYD80Tmpe5f27G3MNm7ZTFYTl4pM8jAbU1xjDkgyHsLdp72HorXuNl1c5V3PnNnQEdS6qX5cthz57y2zid8MMPQSlHqlDIg8pll13Gk08+ybhx4+jUqROLFy9m+vTphw2wFQm6iDrQPx1a3Q5hceU2tSz4Zx2rzAGoLqB3JHSxwTTkA8It+OOgcSgG2OaBAVtKLvsf54S/1S7/WC6Hi6Edhpa5v6I1Tg5tO2nxJLbv215h21nrZ7F61+oyxwZ5jIe3f39bZ1WOQ6E+IynBE/KgAnDLLbewYcMGCgsLmTdvHt27dw91SSI+4Qlw8pMweDsM2gIpl+/fcdCvjuUCLIalvc6AlgNKPUz7cPiw/AkxQeU1viXwPzxkzTUPsLoYvs4ruf3hehBrHf6CcWDZ+mf6P1PupZq+zftWuMLsAcXeYl7/9XVOfeNUduTtKLftr1t/rTAEFXmKWL59eUDPLdVH69aQkFB+G48HzjgjOPVI1bFFUBGxPUcYRDeEnm/DqZMh4STAAisMks+DtNlYJ1zLE2c/UeqX7/bCtH2huVPyodzGF0iuyoKCUuoJA2YcElSSXbC0KQyJ8a39ckDLui2ZOngqN3e9udznHNhqIE3jmgZ8ZsVjPGzYs4F/zf5Xue3CneEBjXuJcGkA/vEmIgJuu63sMysuF5x8Mmi4Y/VnmdJuWVqN5OTkEBcXR3Z2NrGxGt0vQWT2r4J20CtlgbuAxCcT/YM6DzUmAf5dL0j1lcIY+DIPHt4F8wpKbxMG3Bpf9sJ3Ozyw1h1O7f4/0rph14BuGgiwYscK+kzpQ+beTF8tAazUUiusFjvH7CwzaKzZtYaWL7Qs9xgNajVg06hNhDnLv32CVD/FxTBkCHz66V/Tkw/8OKak+KYnN20a2hqlbIG+f+uMitQ8e/6AedfDx0nwYR34/lzY/L8jP91hOQ77c+7Vha+SW1jG3fqAx3fDksIyd1epAi+YxL4M3xFZZkgB3yDbXuWslFvPCd1Oe4o2yd0CDikAreu1ZsUtK3jh3Bfo3bQ39aPrV3jH433F+w6/K/VBTqhzAhe3vrjcMzV397xbIeU4FRYGH38M06ZBv37QogV06QLPPQdLliikHC90RkVqloxpMOdS38dm/5gJy+lb6K3NndDp8WMapdf6xdas2rmqzLMFLstieJzFC/UDm6ZbGYyBH/Khd7cHsTrcx1Oz7+Ou2Y+UWqET32Wetc3KuMdRdGPo+DA0v+aY67p3xr08PvfxCseu7L57N/GR8WXuzy3M5YJ3L2D2htm4LBdu48blcOH2urm12608d85zRxSoRCQ4An3/ttGamCJVLD8Tfrp8/+qzB71NH5gxsvxJqNcTmgw66qdYu3ttuZc03Mawsij4fxt0qNsCq0FPAG7v/SDztyzgvdVf48Q3XgV8wcQFPFQHMtywyQ2v7PFdIkoJs3jxgjdo0+pqcAQ+g6c8Q9oN4dE5j5a532k5OSv1rHJDCkDtiNrMvGYmM9bO4J0/3mFn3k5S41O57uTr6JjYsVJqFZHQUVCRmuPP18Hrpsy72FhOWPnsMQWVmPAYdhfsLnO/E4g/5IKr2/juXFyV6uSvg5lp0OgCCrtP4dLON1Iv7gR+3vAtW3K34rScbMrfQyEwrJQrLWvchtM+G82UQXUZ2GpgpdTUKakTA08cyJervzxserGFhcEwrnfpK90eymE5OLvF2Zzd4uxKqU1E7ENjVI5QkaeIt5e8TZ8pfTjh+RPoPak3kxZNosBdzkV/sYftc6G8G+IZD+wo/a7dgbqyw5W4rLLzvwe4LKbktml7S21aaXxXPbwYA0/88QVJTyYy+P3BvLTgJRZuX0VMdBKnpJxR4YJsewr2cOHUC5m4YGKl1fbO4HcY1HoQ4DuDEubwjSWpHVGbjy79iF5Ne1Xac4lI9aQxKkdgb9Fe+r/Zn7mb5uKwHHiN1/9vp8ROzLxmJglRFUzslypljOHHjT/y8fKP2Vu0lzb12nD1SVdTv1Z9mH0BbP6Scu8L7IyCy/LK3l+BtbvXctLEk8gvzj/sLIELaBsOC1NKnkFpvg5+awq1q/jPhn/thHGlrHvm8A9otQK6s7HL4WLTqE0kxlTeoozLty//63tWvw1D2g4hKqycEb0iUu0F+v6toHIErv30Wv77239LXQXTaTm5sPWFfHTpR1Vag5Rtd/5uLpx6IT9u/NF/dsBrvDgtJxPPn8i10Xth4e2UfenH5VsT5YxPj6mOXzb/wsXvXczm3M2EOcIwxuA2bnpF+hZ9a3DIiQvXaniwLtyTUMrg1UqywwPJa30zekpjUW58K8FhOXi0z6PcffrdlVSdiNREGkxbybbv286bS94sd6nuacunsWHPBprGa05csBljuPj9i5mb4bsD2cEzSbzGy3WfXUfypR9wTlgcFOdQ6iUg44Y2dxxzLd0adWP97ev5ctWXzN8yn3Dj4VzPCrru+KTU9nWc8MguOCsKukf6QoOjkgPLBxXcAflI/lpxWA5W7lx5rCWJiAREY1QC9POmnyucRmkwzNk4J0gVycF+2fwLs9bPKjNIOiwHD6c/C2d9BWG1KbkEvhOwoOvL0KB3pdTjcri4sEVfHq61jXHbn/aHlNLOX/49FooM9N0M9+yAjft/zDwGiivpfGemp3L/KqkdXsHNf0REKonOqAQokFU0j6SdVK5pK6b5184ojdd4+SnjJ3ZGt6TuBWtg7X9g8xfgLYR6PeCE4RDXuvIK8hTBjD6wawEHn6+wLF9YObCsx+d74fs832ygYgNP7vE9Dvxirk+Fhs5jP8PSyFX+GRXwncl5vQGM2g455fwYu71uhrQbcmwFiYgESEElQN0bdS/3jRB8UypPTzk9iFXJAfuK9lW4yilAvjsfYhtD2zG+R1XwFsPcq2DX/FJ3HxxSBm71fTyxAbySDYv2r1rrBqY08AWM8jkodybTfpfGwG3bobCMAOIE0qLh2jjfgN/TN4F3/xThEu0sJ6ennE7PJj0rfE4RkcqgSz8BSoxJ5Mr2V5a5VLfTcjKw1UCaxTcLbmECQPsG7Su8NBcXEUdircqbqVIqTxHMGgAZH5TbzBioddBvX98o+DUF5jeBCfXh62S4Oi6QJ/RCx0ch4qAb81hOaHwRtB4D0SngiCQ+timPtD+n1CM4gHALHtt/D6JTo5183K4LMeG+edRhjjD/4OQzm53JJ5d/opVeRSRodEblCLxw3gus2LGCX7b84p+WfOCv+Db12/DGwDdCXGHNdWWHKxn9zWjyi/NLvfzmtJzcdMpNVX/Pl5XPQOZ3FTazLGgXDjfGQpLLN13Za6BLpO9xRBLPgLZ3wq6F4CmA2DYQWR+2fAW5KyB3NUTU5Y5mg4hpfC73zbyX7YV/Ld7SKQJeaeD7FwDjYWD3e9k68GzeX/o+f2z7g+iwaC5sfSFdkrscYXEiIsdG05OPUKG7kHf/eJfXf32djdkbSa6dzLWdr+WqjlcRHRZd5c8vZfto2Udc+uGlWFglBtU6LSftG7Tnx2E/UjuiCgeBGi980gTyt1TcdP9vncF3medAfDqqExWOSEibDfW6+T73un23Csj46K/7GB24LBbTnOJenzPnm4HsyV5LizAvHUvcmNgBiX3grOmVtlS+iEhptI6K1EhzNs7h0R8fZfqa6RgMdaLqMKLLCO7ueXfVhhSAgu3wcYOqfY7SWA6IOQHOX+FLOr8/6HuUNrDbckGdLr7ZTwtugw3v/nVzRkcEtLgWOj8FLi22JiJVS0FFarS84jzyivNIiEzAGawzA0XZ8GF8pRzKGMAigOHBB0n7Eep2hWkNoajs+w0B0P8XX9v8LN/MJMsB9U6FcK2sLCLBEej7twbTynEpOiyaetH1ghdSAMLjoO6pVMavVXrBEYYUgJxlkL204pBiOSHre9/HUYnQaAAkn6uQIiK2pKAiUpnajSWQ6cIVcbS5A1pcd+CzwL7IFUPga8xW6xOpIlKDKKiIVKbGA+HkZwDH/hVv4SjOjXBq66HQ7TXo9RHU71XxMRwRvrMisW3BVcElUOOB+lrvR0SqBwUVkcrW+nYYuBra3AWNBkLTy6DZVQQcWGqfCAmdfANjm1wMZ8/aH37KYsGJt/ou3bii4MQRlPmrbbkg/iSod9qR9EhEJGS0jopIVYhpDp3G//X56gmw/q3AvrbDA4fPU251GxTtgj8e3r9v/4q0xgMn3FjyuTo8CLt+hcxvfYNkzYFLUQ6ITITeHx/lPGgRkeDTrB+RYNiXAZ+mVNwuMhEu2uILGKXJ2wTr3oS8DIhoAM2GQmzLw9t53bDhPVjzCuSugYi6kPo3aHE9RNQ5tr6IiFSCQN+/dUZFJBhqNYHUq2Hdf8tv1+GBskMKQHTj/QN2K+BwQepQ30NEpBrTGBWRYOk6EZLPL3t/m7vhhJuCV4+ISDWgMyoiweKKgjM/h53zYdljsHuJ78xH/V7QejTEtT6y4xXt8Z2h2Tbbt0Jcg97Q/BqthyIixxWNURGpjrb9ALPOB/fekttdteCMzyDxrNDUJSISIK1MK3K8ytsE358L7n34Fm476OHOg1kDYN+G0NYoIlJJFFTEtowxTF8znQunXkizZ5vR/uX2PDT7IbL2ZoW6tNBa/Qp4Cih9BVwveItg9cRgVyUiUiV06UdsyRjD8C+H8+rCV3FaTjzGA4DDchAXEceMq2fQuWHnEFcZIp+1hL1rym9TuxVcsCI49YiIHAVd+pFq7bVfX+PVha8C+EMKgNd4ySnM4bx3zqPIUxSq8kKrILPiNu6cqq9DRCQIFFTEdowxPJX+FFYZS857jIfMvZlMWz4tyJXZgDv/8AG0pQnT2UUROT5oerLYzs78nazauarcNi6Hi9kbZnNZ+8uCVJVNBBJSAGJaBHxIYwyLMhexdvdaEiIT6N20N2HOsKMsMDjmb57PtBXTyCvOo32D9lze/nJiwmNCXZaIVAEFFbGdss6kHNomkHbHnfAEcNUGd245jayAbzqYnpHO8C+HsyRriX9bg1oNeKTPI1x/8vXHWGzl21Owh0vev4QZ62bgcriwsHB73dw+/XbevOhNLmpzUahLDKmsLPjqK8jPh5NOgh49dFsnqf506Udsp05UHVrVbVVuECn2FnNGszOCWJVNOFzQ4jqwnOU0sqD53ys81IItCzhryln8se2PEtu37dvGDZ/fwPPznj+2WiuZMYZBUwcxa/0sANxeN8XeYgyGvOI8hnwwhLkZc0NbZIgUFsKIEdC4MQwbBiNHQs+e0L49LF4c6upEjo2CitiOZVncedqdGEqfkOa0nCTXTuai1jX0r+d2//Td88cq44ToSY9AdKMKD3PnN3fi9rrxmtKmOcM9391DTqF9BuX+lPETszfMLjG4+oADPyuP/PBIsMuyhauvhldfBbfb9/mBuZwrV0Lv3rCmgkliInamoHIcSM9I54oPr6Dx041p+mxTRnwxgmXbl4W6rGNyXefruLnrzYBvPMoBDstBXGQcXw39yvbjKKpMZH3o9zM0vaxkWKmVCqdOgnb3VHiIjdkby3zTP6DAXcDHyz+ujIorxYfLPizxs3Aoj/Hw1ZqvyCvOC2JVobdwIbz/PnhLyZsej+8y0Pjxwa9LpLJojEo198RPTzDmuzG4HC7cXt+fU68vep3XF73Ou4Pf5ZK2l4S4wqNjWRYvnvsig9sMZsL8CSzOXExMRAyXtr2U60++nvq16oe6xNCKSoLT3oJTnoPcP8EVDXFty7/z8kG25m6tsI3T4WRzzuZjrbTS7C2qeCDxgctA0WHRQajIHt5+G1yuv86mHMrt9rV55RVfO5HqRj+21djs9bMZ890YAH9IOfCxhcWVH11J1+SuNI1vGqoSj4llWfRJ7UOf1D6hLsW+Iur6HkcoMSaxwjYer4ekmKSjqapKtK7XuszLVAfUiapDQmTNuinjtm1/XeopS2Eh7NsHcXHBqUmkMunSTzX27LxnyzwVbjB4jZdXFr4S5KqkOmgW34yeTXriKOcMTIQrgsFtBwexqvJdc9I1OMsZROy0nAw/ZThOR3kDjY8/KSkVz+ypXRtiNHtbqikFlWrshw0/lDiTciiP8fhnSIgc6vGzH8dhOXCU8TLw4JkPEh8ZH9yiylG/Vn1eHvAywGEBy2k5adegHXeffncoSgupv/+97Ms+AE4nXH+971+R6khBpRoLZB2R8v5iluNTkaeI95e+z6jpo7jzmzuZvmZ6qZdM2jdoz+sXvE5KfEqJ7XERcTx3znPcddpdwSo5YNeffD1fXPEF3ZK7+bfFRsRy+6m38+OwH4mNqHkr8p54IoweXfo+pxMSE2HMmODWJFKZNEalGju7+dl8uPzDMs+qOCwHZzc/O8hVSSjN3zyfgVMHkrk3kzBHGAbf7Qha1W3Fl1d+SYs6LcjIzuDemfcy9Y+pFHuLAejYoCPnnXgePZv0JK15GpGuyBD3pGwDThzAgBMHsH3fdvKK80iKSSLCFRHqskLqySchKQkeewx27fJtsyw47zx46SXfPpHqSndPrsbmbZpHjzd6lLreiIVFhCuCP2/7k+TaySGoToItIzuD9hPas69o32HTjl0OFw1jGvL1VV9z1pSz2Jm3E7f5K+A6LScGw0eXfsSg1oOCXLlUlqIi+Pln35Tkdu18C8CJ2JXunlwDdG/cnVfOfwULq8SgWqflJMIVwSeXfaKQUoO8+MuLpYYU8M0E25Szib9N+xs78naUCCngG89kjOHaT6+l0F0YrJKlkoWH+xZ4699fIUWOHzqjchxYtn0ZL89/mR82/ECYI4xzTjiH4V2G0ySuSahLkyBKeSaFjJyMMvdbWGWu9nuwqYOn1rybPYpI0AX6/q0xKseBtvXb8uJ5L4a6DAmxihZECySkhDnCKrxztYhIMOnSj8hxol39duXO8ipvDZIDPMZTI2fOiIh9KaiIHCdu7npzuSu3eoyH1PjUcqe1G2O4uM3FVVGeiMhRqZKgsn79eq677jpSU1OJioqiRYsW3H///RQVFZVot2TJEnr16kVkZCRNmjTh8ccfr4pyRGqES9tdykWtLzosiBz4fPSpo3m6/9NlXgKysLj+5Os1tklEbKVKgsqKFSvwer288sorLF26lGeeeYaJEyfyz3/+098mJyeHfv360bRpUxYuXMgTTzzBAw88wKuvvloVJYkc95wOJ+8PeZ/H0h4rMdurZd2WvH7B6zzZ70kGtR7E6xe8TpQrCguLMEcYTsuJhcWwTsM01klEbCdos36eeOIJJkyYwNq1awGYMGEC9957L5mZmYSHhwNwzz338Mknn7BixYqAj6tZP1Ij7PgF/nwNclZCeB1oejk0uRic4aU293g9bMndgtPhpGFMQ6xDbgaTU5jD1D+msnb3WuIj47m03aU0T2gejJ6IiAA2nPWTnZ1NnTp1/J+np6fTu3dvf0gB6N+/P//+97/ZvXs3CQml3wG1sLCQwsK/1nnIycmpuqJFQs0YWHArrH4JLBcYN+CAzZ9CXDvoMwOiDr8TstPhLPcSTmxELDeecmMVFi4iUjmCMph2zZo1vPDCC9x0003+bZmZmSQmlnyBPfB5ZmZmmccaP348cXFx/keTJrqeLsexVS/6QgrsDykA+wfM5qyAOZeEpCwRkWA5oqByzz33YFlWuY9DL9ts3ryZc845hyFDhnDDDTccc8Fjx44lOzvb/8jIKHuBK5FqzeuB5eUMMDce2D4Hdi4IXk0iIkF2RJd+7rjjDv7+97+X26Z587+uc2/ZsoWzzjqL00477bBBsklJSWRlZZXYduDzpHLuoBUREUFERM2+AZnUELmrIG9T+W0sJ2ydDnW7BKcmEZEgO6KgUr9+ferXrx9Q282bN3PWWWdxyimnMGnSJByOkidvevTowb333ktxcTFhYWEAfPvtt7Rq1arM8SkiNYop/a7YJVlQxt2zRUSOB1UyRmXz5s2ceeaZpKSk8OSTT7J9+3YyMzNLjD258sorCQ8P57rrrmPp0qW89957PPfcc4wePboqShKpfmJOAFcFM9mMG+p1D049IiIhUCWzfr799lvWrFnDmjVraHzILTwPzIaOi4vjm2++YeTIkZxyyinUq1ePcePGceONmokgAoArClreBCue9o1HOZTlhOgm0LB/8GsTEQkS3T1ZxM7cefB9f9j+0/4N+39dLSe4akPa95DQKVTViYgctUDfv3WvHxE7c0VDn++gy4sQ1x6c0RCZBK1HwXlLFFJE5LgXtAXfROQoOSPgxJt9DxGRGkZnVERERMS2FFRERETEthRURERExLYUVERERMS2FFRERETEthRURERExLY0PbkU7gI3a79bS97OPOKbxdO0V1MshxXqskRERGocBZWDGGOY//J8vv+/7ynYU+DfHp8az/mvnE+Ls1uEsDoREZGaR5d+DjLvuXl8dctXJUIKQPaGbN457x3Wz14fmsJERERqKAWV/QpzC5l578xS9xmvwXgN3971bZCrEhERqdkUVPZb8ckKivOKy9xvvIYt87ewc9XOIFYlIiJSsymo7Lc3cy+Ws+IBs3sz9wahGhEREQEFFb/YRrEYj6mwXe1GtYNQjYiIiICCil+rC1sRHhNe5n7LYdH4tMbUaVEniFWJiIjUbAoq+4XXCufsJ84udZ/lsLCcFv2e7BfkqkRERGo2BZWDdBnehQsnX0hMUkyJ7fXb1ueamdfQpEeTEFUmIiJSM1nGmIoHZthYTk4OcXFxZGdnExsbWynH9Lq9bJyzkbydeSSkJpDUOQnL0sq0IiIilSXQ92+tTFsKh8tBszObhboMERGRGk+XfkRERMS2FFRERETEthRURERExLYUVERERMS2FFRERETEthRURERExLYUVERERMS2FFRERETEthRURERExLaq/cq0B+4AkJOTE+JKREREJFAH3rcrupNPtQ8qubm5ADRpohsGioiIVDe5ubnExcWVub/a35TQ6/WyZcsWateufVQ3DszJyaFJkyZkZGRU2k0N7aim9BNqTl/Vz+NLTekn1Jy+qp/lM8aQm5tLcnIy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9JBZsGCBWbdunfn0009N8+bNTe/evf3HqKx+1qigcs011xjgsMf3339vjPFNhevUqZOJiYkxtWrVMieddJKZOHGi8Xg8JY7z/fffm06dOpnw8HDTvHlzM2nSpOB3phwV9dMYY9avX2/OPfdcExUVZerVq2fuuOMOU1xcXOI4du/noRYuXGi6d+9u4uLiTGRkpGnTpo159NFHD0vuv/32mzn99NNNRESEadSokXnsscdCVPHRe+GFF0xKSooJDw833bp1Mz///HOoSzoml112mWnYsKEJDw83jRo1MpdddplZs2aNf39+fr65+eabTUJCgomOjjYXXXSR2bp1awgrDtz3339f6u/jNddcY4zx/eV63333mcTERBMREWH69u1rVq5cWeIYO3fuNFdccYWJiYkxsbGxZtiwYf4/POyivH7m5eWZfv36mfr165uwsDDTtGlTc8MNNxwWrqtDP0vrI1Di9TGQn9dAXoNDqaJ+bty40fTu3dvUqVPHREREmBNOOMHcddddJjs7u8RxKqOf1v6CRERERGxH66iIiIiIbSmoiIiIiG0pqIiIiIhtKaiIiIiIbSmoiIiIiG0pqIiIiIhtKaiIiIiIbSmoiIiIiG0pqIiIiIhtKaiIiIiIbSmoiIiIiG0pqIiIiIht/T9VynOBW6UQ7wAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 建立四个颜色的列表\n",
    "colored = ['orange', 'green', 'blue', 'purple']\n",
    "colr = [colored[i] for i in predict] #根据类别给每个样本赋予颜色\n",
    "#去选择任意两个特征来看聚类的图，可以自行调整,第2个，第20个特征\n",
    "plt.scatter(x[:, 1], x[:, 19], color=colr)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:17:25.316190800Z",
     "start_time": "2024-07-15T03:17:25.283122100Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "0.6143140858565163"
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评判聚类效果，轮廓系数，聚类效果很难超过0.7，可以通过这个得分去调整上面KMeans的n_clusters\n",
    "silhouette_score(x, predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-15T03:17:45.643790600Z",
     "start_time": "2024-07-15T03:17:45.612940700Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6143817456208673\n"
     ]
    },
    {
     "data": {
      "text/plain": "array([2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n       2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2,\n       2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2,\n       2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2,\n       0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,\n       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n       2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0,\n       2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2,\n       2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2,\n       2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2,\n       2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 1, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2,\n       0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,\n       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 2, 2, 2, 2,\n       2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2,\n       0, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 2, 2, 2, 0, 2, 2, 2,\n       2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2,\n       2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2,\n       2, 1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2,\n       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2,\n       2, 2, 2, 1, 2, 2, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 1,\n       2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2,\n       2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2])"
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#改为3时的结果\n",
    "km = KMeans(n_clusters=3)\n",
    "km.fit(x)  #开始训练\n",
    "predict = km.predict(x)\n",
    "print(silhouette_score(x, predict))\n",
    "predict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "outputs": [
    {
     "data": {
      "text/plain": "aisle\nair fresheners candles           0\nasian foods                      0\nbaby accessories                 0\nbaby bath body care              0\nbaby food formula                0\n                                ..\ntrash bags liners                0\nvitamins supplements             0\nwater seltzer sparkling water    0\nwhite wines                      0\nyogurt                           1\nName: 1, Length: 134, dtype: int64"
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 通过分类后数据，去看原始样本的特点\n",
    "cross.iloc[0]"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "outputs": [
    {
     "data": {
      "text/plain": "aisle\nair fresheners candles             0\nasian foods                        4\nbaby accessories                   0\nbaby bath body care                0\nbaby food formula                  0\n                                ... \ntrash bags liners                  0\nvitamins supplements               0\nwater seltzer sparkling water     92\nwhite wines                        0\nyogurt                           150\nName: 27, Length: 134, dtype: int64"
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict[26]\n",
    "cross.iloc[26]"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "outputs": [
    {
     "data": {
      "text/plain": "0.6471264722807814"
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#改为3时的结果\n",
    "km = KMeans(n_clusters=3)\n",
    "km.fit(x)  #开始训练\n",
    "predict = km.predict(x)\n",
    "silhouette_score(x, predict)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 四种异常值检测的方法"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 1.基于分位数找异常值"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "outputs": [
    {
     "data": {
      "text/plain": "array([[0.37454012],\n       [0.95071431],\n       [0.73199394],\n       [0.59865848],\n       [0.15601864],\n       [0.15599452],\n       [0.05808361],\n       [0.86617615],\n       [0.60111501],\n       [0.70807258],\n       [0.02058449],\n       [0.96990985],\n       [0.83244264],\n       [0.21233911],\n       [0.18182497],\n       [0.18340451],\n       [0.30424224],\n       [0.52475643],\n       [0.43194502],\n       [0.29122914],\n       [0.61185289],\n       [0.13949386],\n       [0.29214465],\n       [0.36636184],\n       [0.45606998],\n       [0.78517596],\n       [0.19967378],\n       [0.51423444],\n       [0.59241457],\n       [0.04645041],\n       [0.60754485],\n       [0.17052412],\n       [0.06505159],\n       [0.94888554],\n       [0.96563203],\n       [0.80839735],\n       [0.30461377],\n       [0.09767211],\n       [0.68423303],\n       [0.44015249],\n       [0.12203823],\n       [0.49517691],\n       [0.03438852],\n       [0.9093204 ],\n       [0.25877998],\n       [0.66252228],\n       [0.31171108],\n       [0.52006802],\n       [0.54671028],\n       [0.18485446]])"
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.seed(42)  # 为了结果的可重复性设置随机种子\n",
    "X = np.random.rand(50, 1)  # 2维数据\n",
    "X"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T03:24:15.676395100Z",
     "start_time": "2024-07-15T03:24:15.665113500Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "outputs": [],
   "source": [
    "X[0,0]=3\n",
    "X[1,0]=2"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T03:24:51.182038300Z",
     "start_time": "2024-07-15T03:24:51.170078Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "outputs": [
    {
     "data": {
      "text/plain": "   column_name outlier\n0          3.0     Yes\n1          2.0     Yes",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>column_name</th>\n      <th>outlier</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>3.0</td>\n      <td>Yes</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>2.0</td>\n      <td>Yes</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# 假设df是一个Pandas DataFrame，包含了你想要分析的数据集\n",
    "# 'column_name'是你想要检测异常值的列名\n",
    "\n",
    "#随机一个dataframe\n",
    "df=pd.DataFrame(X,columns=['column_name'])\n",
    "\n",
    "# 设置分位数，例如四分位数\n",
    "Q1 = df['column_name'].quantile(0.25)  # 第一四分位数（25%）\n",
    "Q3 = df['column_name'].quantile(0.75)  # 第三四分位数（75%）\n",
    "\n",
    "# 计算四分位数范围（IQR）\n",
    "IQR = Q3 - Q1\n",
    "\n",
    "# 定义下界和上界来识别异常值\n",
    "lower_bound = Q1 - 1.5 * IQR\n",
    "upper_bound = Q3 + 1.5 * IQR\n",
    "\n",
    "# 标记异常值\n",
    "df['outlier'] = df['column_name'].apply(lambda x: 'Yes' if x < lower_bound or x > upper_bound else 'No')\n",
    "\n",
    "# 打印出被标记为异常值的行\n",
    "df[df['outlier'] == 'Yes']\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T03:24:55.443289200Z",
     "start_time": "2024-07-15T03:24:55.429882500Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 3.基于DBSCAN算法找异常值"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1600, 2)\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGzCAYAAAAi6m1wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACCyUlEQVR4nO3deXxU5b0/8M+ZJCQTJCtLyL6wiQtLICEoCBLFpf1dqbWtFSVUcbkBWay3eq9L0VbqTqTU5aJgXWrrgu1tvd4SQFEICbJo3TAJgZBAQLKyJCEz5/z+SM7hnDPnzJJMMtvn/Xrx0pk5c/LMzJk53/N9vs/zCJIkSSAiIiIKIhZfN4CIiIjI2xjgEBERUdBhgENERERBhwEOERERBR0GOERERBR0GOAQERFR0GGAQ0REREGHAQ4REREFHQY4REREFHQY4BDRgMjMzERRUZGvm+E3fv3rX0MQBI+2PXHiRD+3ynOCIODXv/61r5tB5IABDpELNTU1WLx4McaMGYPo6GhER0dj/PjxKC4uxhdffOHr5nnVBx984POTlSAIyr/w8HAkJCQgNzcXS5cuxddff93r/Z45cwa//vWv8dFHH3mvsV722GOP4f333/f6fouKiiAIAi6++GIYrc4jCAIWL17s9b9L5EsMcIic+Pvf/44LL7wQr732GgoLC/Hss8+ipKQEV199NT744ANMnDgRhw4d8nUzveaDDz7AypUrfd0MXHHFFXjttdewfv16PPLII5g8eTJeffVVTJgwAc8880yv9nnmzBmsXLnSbwKcBx54AO3t7Zr7+ivAkf3rX//Ce++959V9tre344EHHvDqPom8IdzXDSDyV9XV1fjZz36GjIwMbN68GSNHjtQ8/vjjj+MPf/gDLBb/vU44ffo0Bg8e7OtmeGzMmDGYP3++5r7f/e53+OEPf4h77rkH48aNwzXXXOOj1nlHeHg4wsMH7ifYarUiLS0NjzzyCH70ox+53T3mSlRUlFf2Q+Rt/vvLTORjTzzxBE6fPo3169c7BDdA9wnq7rvvRlpamub+b7/9Fj/+8Y+RkJCAqKgoTJkyBX/7298022zYsAGCIGD79u1YsWIFhg0bhsGDB2PevHn4/vvvHf7W//7v/2LGjBkYPHgwhgwZgmuvvRZfffWVZpuioiKcd955qK6uxjXXXIMhQ4bgpptuAgB88sknuOGGG5Ceno7IyEikpaVh+fLlmgxCUVER1q5dC0DbTSQTRRGrV6/GBRdcgKioKIwYMQJ33HEHmpubNe2QJAm/+c1vkJqaiujoaMyePduhrb2RmJiIt956C+Hh4fjtb3+r3H/27Fk89NBDyM3NRWxsLAYPHowZM2Zg69atyjYHDx7EsGHDAAArV65UXpvcHffFF1+gqKgI2dnZiIqKQlJSEn7xi1+gsbHRaZskScLQoUOxYsUK5T5RFBEXF4ewsDC0tLQo9z/++OMIDw/HqVOnADjW4AiCgNOnT+PVV19V2qevWWppaUFRURHi4uIQGxuLhQsX4syZM269fxaLBQ888AC++OILbNy40eX2x48fx6233ooRI0YgKioKEyZMwKuvvuqwnb4G5+TJk1i2bBkyMzMRGRmJ4cOH44orrsCePXs0zysvL8dVV12F2NhYREdH47LLLsP27dvdei1E7mAGh8jE3//+d4waNQr5+fluP+err77CJZdcgpSUFNx3330YPHgw/vKXv+C6667Du+++i3nz5mm2X7JkCeLj4/Hwww/j4MGDWL16NRYvXow///nPyjavvfYaFixYgLlz5+Lxxx/HmTNn8Pzzz+PSSy/F3r17kZmZqWxrs9kwd+5cXHrppXjqqacQHR0NAHj77bdx5swZ3HXXXUhMTERFRQXWrFmDuro6vP322wCAO+64A0eOHMGmTZvw2muvOby2O+64Axs2bMDChQtx9913o6amBr///e+xd+9ebN++HREREQCAhx56CL/5zW9wzTXX4JprrsGePXtw5ZVX4uzZs26/j2bS09Nx2WWXYevWrWhra0NMTAza2tqwbt063HjjjVi0aBFOnjyJl19+GXPnzkVFRQUmTpyIYcOG4fnnn8ddd92FefPm4Uc/+hEA4OKLLwYAbNq0CQcOHMDChQuRlJSEr776Ci+99BK++uor7Ny50zTbIQgCLrnkEmzbtk2574svvkBrayssFgu2b9+Oa6+9FkB3kDlp0iScd955hvt67bXXcNtttyEvLw+33347ACAnJ0ezzU9+8hNkZWVh1apV2LNnD9atW4fhw4fj8ccfd+v9+/nPf45HH30UjzzyCObNm2f6utrb2zFr1ixUVVVh8eLFyMrKwttvv42ioiK0tLRg6dKlpn/jzjvvxDvvvIPFixdj/PjxaGxsxKeffopvvvkGkydPBgBs2bIFV199NXJzc/Hwww/DYrFg/fr1uPzyy/HJJ58gLy/PrddD5JRERA5aW1slANJ1113n8Fhzc7P0/fffK//OnDmjPDZnzhzpoosukjo6OpT7RFGUpk+fLo0ePVq5b/369RIAqbCwUBJFUbl/+fLlUlhYmNTS0iJJkiSdPHlSiouLkxYtWqRpQ0NDgxQbG6u5f8GCBRIA6b777nNos7qNslWrVkmCIEiHDh1S7isuLpaMfhY++eQTCYD0xhtvaO7/8MMPNfcfP35cGjRokHTttddqXtd//ud/SgCkBQsWOOxbD4BUXFxs+vjSpUslANLnn38uSZIk2Ww2qbOzU7NNc3OzNGLECOkXv/iFct/3338vAZAefvhhh30avT9/+tOfJADStm3bnLb3ySeflMLCwqS2tjZJkiTpueeekzIyMqS8vDzpV7/6lSRJkmS326W4uDhp+fLlyvMefvhhh/d68ODBhu+RvK369UiSJM2bN09KTEx02j5J6j42Bg8eLEmSJL366qsSAOm9995THte/56tXr5YASK+//rpy39mzZ6WCggLpvPPOU16r/Fz1exobG+v08xNFURo9erQ0d+5czTFy5swZKSsrS7riiitcvh4id7CLishAW1sbABhebc+aNQvDhg1T/sndOk1NTdiyZQt+8pOf4OTJkzhx4gROnDiBxsZGzJ07F5WVlaivr9fs6/bbb9dcRc+YMQN2u10pXN60aRNaWlpw4403Kvs7ceIEwsLCkJ+fr+mGkd11110O91mtVuX/T58+jRMnTmD69OmQJAl79+51+X68/fbbiI2NxRVXXKFpR25uLs477zylHaWlpTh79iyWLFmieV3Lli1z+TfcJX8mJ0+eBACEhYVh0KBBALq7h5qammCz2TBlyhSHbhEz6veno6MDJ06cwLRp0wDA5T7kz2zHjh0AujM1M2bMwIwZM/DJJ58AAL788ku0tLRgxowZHrxSR3feeafD325sbFSOV3fcdNNNGD16NB555BHDEVVAd7F5UlISbrzxRuW+iIgI3H333Th16hQ+/vhj0/3HxcWhvLwcR44cMXx83759qKysxM9//nM0NjYqx9Lp06cxZ84cbNu2DaIouv16iMywi4rIwJAhQwBAqZdQe/HFF3Hy5EkcO3ZMUwhbVVUFSZLw4IMP4sEHHzTc7/Hjx5GSkqLcTk9P1zweHx8P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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import DBSCAN\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.cluster import DBSCAN\n",
    "from sklearn.datasets import make_blobs\n",
    "\n",
    "# 生成样本数据\n",
    "n_samples = 1500\n",
    "random_state = 170\n",
    "X, y = make_blobs(n_samples=n_samples, random_state=random_state) #y没有用\n",
    "\n",
    "# 增加一些噪声点，往X中拼接噪声点\n",
    "rng = np.random.RandomState(74)\n",
    "X = np.concatenate([X, rng.uniform(low=-10, high=10, size=(100, 2))])\n",
    "print(X.shape) #1600个样本，2列特征，100个噪声点\n",
    "# 可视化生成的数据\n",
    "plt.scatter(X[:, 0], X[:, 1], s=5)\n",
    "plt.title(\"Generated Data with Noise\")\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T06:36:48.936617400Z",
     "start_time": "2024-07-15T06:36:48.780748600Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "outputs": [
    {
     "data": {
      "text/plain": "array([[ -5.19811282,   0.64186932],\n       [ -5.75229538,   0.41862711],\n       [-10.84489837,  -7.55352273],\n       [ -4.57098483,  -0.80101741],\n       [ -3.51916215,   0.0393449 ]])"
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X[0:5]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T06:39:15.565097500Z",
     "start_time": "2024-07-15T06:39:15.554851Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-1  0  1  2]\n",
      "131\n",
      "[0 1 2]\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGzCAYAAAAi6m1wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAC9kklEQVR4nOzddXxTVxvA8d9N6u5KKe7u7jYGM2DMsTF5YcaYwJxtwJw5YwLbYEMGY4zhznAb7lYoVereJPf9I23aNGlpoaX2fD+fUnJz5dw0yX3uOc85R1FVVUUIIYQQogrRlHcBhBBCCCFKmwQ4QgghhKhyJMARQgghRJUjAY4QQgghqhwJcIQQQghR5UiAI4QQQogqRwIcIYQQQlQ5EuAIIYQQosqRAEcIIYQQVY4EOEKIaqdXr1706tWrvItxU7Zs2YKiKGzZsqW8iyJEhSYBjhAV1Lx581AUxfTj4OBAUFAQAwcO5IsvviA5Odlim7fffttsG41GQ2BgIEOGDGH37t0W6x89epThw4cTGhqKg4MDwcHB9O/fny+//NJiXb1ez9y5c+nVqxdeXl7Y29tTq1YtxowZw/79+62ewzfffIOiKHTs2LHQ88wt6yeffFLoa1DY/guKiopi8uTJNGrUCCcnJ5ydnWnbti3vvfceCQkJxdpHaZg+fTrLly+/bccTQliyKe8CCCGKNm3aNGrXrk12djaRkZFs2bKF559/nk8//ZQVK1bQokULi22+/fZbXFxcMBgMXLlyhe+//54ePXqwd+9eWrVqBcDOnTvp3bs3NWvWZPz48QQEBHDlyhV2797N559/zjPPPGPaX3p6Ovfddx9r1qyhR48eTJ06FS8vLy5dusTixYv5+eefCQsLo0aNGmblWLBgAbVq1WLv3r2cO3eOevXqFXqeH330EU8//TROTk439Trt27ePwYMHk5KSwiOPPELbtm0B2L9/PzNnzmTbtm2sW7fupvZdUtOnT2f48OHcc889pb7vHj16kJ6ejp2dXanvW4gqRRVCVEhz585VAXXfvn0Wz23cuFF1dHRUQ0ND1bS0NNPyt956SwXUmJgYs/WPHTumAurUqVNNywYPHqz6+vqq8fHxFvuPiooyezxhwgQVUD/77DOLdXU6nfrRRx+pV65cMVt+4cIFFVCXLVum+vr6qm+//bbV8wTUVq1aqYD6ySefFPs1yC8+Pl4NDg5W/f391ZMnT1o8HxkZqb777rumxz179lR79uxZ5D5vhbOzszpq1KhS3Wd6erqq1+tLdZ9CVGXSRCVEJdSnTx/eeOMNLl++zPz582+4fkBAAAA2NnmVtufPn6dp06Z4eHhYrO/n52f6/9WrV/nuu+/o378/zz//vMW6Wq2WyZMnW6298fT05M4772T48OEsWLCg0PJ17dqVPn368OGHH5Kenn7D8ynou+++Izw8nE8//ZRGjRpZPO/v78/rr79e6Pa5TWGXLl0yW24t3+Xs2bMMGzaMgIAAHBwcqFGjBg888ACJiYmAscktNTWVn3/+2dT8Nnr0aNP24eHhjB07Fn9/f+zt7WnatCk//fST1eMuXLiQ119/neDgYJycnEhKSrJapl69etGsWTNOnDhB7969cXJyIjg4mA8//NDiXC9fvsxdd92Fs7Mzfn5+vPDCC6xdu1byekSVI01UQlRSjz76KFOnTmXdunWMHz/e7Lm4uDgADAYD4eHhvPvuuzg4OHD//feb1gkNDWXXrl0cO3aMZs2aFXqc1atXo9PpePTRR0tUvgULFnDfffdhZ2fHgw8+yLfffsu+ffto37691fXffvttevTowbfffsukSZNKdKwVK1bg6OjI8OHDS7RdSWVlZTFw4EAyMzN55plnCAgIIDw8nJUrV5KQkIC7uzu//vorjz/+OB06dOCJJ54AoG7duoAxR6hTp04oisLEiRPx9fVl9erVjBs3jqSkJIsA8t1338XOzo7JkyeTmZlZZLNUfHw8gwYN4r777uP+++/njz/+4JVXXqF58+bccccdAKSmptKnTx8iIiJ47rnnCAgI4LfffmPz5s1l84IJUZ7KuwpJCGFdcZpn3N3d1datW5se5zZRFfzx8PBQ16xZY7btunXrVK1Wq2q1WrVz587qyy+/rK5du1bNysoyW++FF15QAfXQoUPFLvv+/ftVQF2/fr2qqqpqMBjUGjVqqM8995zFuoA6YcIEVVVVtXfv3mpAQICp2a24TVSenp5qy5Yti12+gk1Uuce5ePGi2XqbN29WAXXz5s2qqqrqoUOHVEBdsmRJkfsvrIlq3LhxamBgoBobG2u2/IEHHlDd3d1N55173Dp16pg1QVorU+75AOovv/xiWpaZmakGBASow4YNMy375JNPVEBdvny5aVl6erraqFEji30KUdlJE5UQ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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用DBSCAN算法\n",
    "db = DBSCAN(eps=0.5, min_samples=5).fit(X) # eps是半径，min_samples是最少包含几个点才会被认为是核心点\n",
    "labels = db.labels_ # 得到每个点的类别\n",
    "print(np.unique(labels)) # 得到类别有-1 0 1 2 总计4个类别\n",
    "# 标签为-1的点是噪声点\n",
    "noise_mask = (labels == -1)\n",
    "print(np.sum(noise_mask)) # 噪声点的数量\n",
    "print(np.unique(labels[~noise_mask])) # 得到噪声点的mask\n",
    "# 可视化聚类结果\n",
    "plt.scatter(X[~noise_mask, 0], X[~noise_mask, 1], c=labels[~noise_mask], s=5, cmap='viridis') # 正常点用彩色标注\n",
    "plt.scatter(X[noise_mask, 0], X[noise_mask, 1], c='red', s=5, label='Noise') # 噪声点用红色标注\n",
    "plt.title(\"DBSCAN Clustering\")\n",
    "plt.legend()\n",
    "plt.show()\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T06:48:19.036485400Z",
     "start_time": "2024-07-15T06:48:18.603962700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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iwIibyePbpyc+OapVq1atLddR5czOnnz5lV169aNtc2DBw9Ur169VM6cOZWDg4MqUKCAGjt2bJRbaJV6dltu165do32OGzduqK5duyovLy/l4OCgcuTIod5++201c+bMyDbff/+9qlq1qsqSJYtycnJS+fPnV1988YUKCQmJ8lxDhw5VuXLlUgaDIcbbycPDw1WWLFlUlSpVYn1tPj4+6s0331RKRT/GklLR356t1Ou9PzEd95eP4b1791S7du1U1qxZVfr06VVAQIA6efKkyps3b5ThCGLKqJRS+/fvV4CqVatWrMfiRc8/v88fzs7OKnfu3KpevXpq7ty56unTp9Fud/jwYdWkSZPI9zBv3ryqWbNmauvWrVHaxfYerl69WlWuXFm5uroqV1dXVahQIdW1a1d16tSpKM+xa9cu9c4776gMGTIoV1dXVaJEiSjjApnNZtW9e3eVLVs2pWlalH+PvHQLuVJKHTp0SAUEBKj06dOrdOnSqRo1akSOZfVcQj8jInXTlJJeVkIIkZIdPXqUUqVKsWDBAlq3bq13HCFSDemTI4QQKdysWbNInz49TZo00TuKEKmK9MkRQogUat26dRw/fpyZM2fSrVu3aPstCSFiJperhBAihfL29ubGjRsEBASwcOHCVwZ0FELEToocIYQQQtgl6ZMjhBBCCLskRY4QQggh7FKa63hstVq5du0aGTJkeO0J7oQQQghhG0opHjx4QM6cOTEY4neOJs0VOdeuXZM5TIQQQohU6sqVK+TOnTtebdNckfP87oQrV67IXCZCCCFEKhEaGoqXl1eC7jJMc0XO80tUGTNmlCJHCCGESGUS0tVEOh4LIYQQwi5JkSOEEEIIuyRFjhBCCCHskhQ5QgghhLBLUuQIIYQQwi7pWuT88ccf1K9fn5w5c6JpGj/++GOc22zfvp3SpUvj5OSEr68v8+fPT/acQgghhEh9dC1yHj16RMmSJZk6dWq82l+4cIG6detSo0YNjhw5Qs+ePenQoQObNm1K5qRCCCGESG10HSfn3Xff5d133413+xkzZuDj48P48eMBKFy4MLt27eLbb78lICAguWIKIYQQIhVKVYMB7t27F39//yjLAgIC6NmzZ4zbhIWFERYWFvlzaGhocsXTTWhoKIsWLWL37t2YzWaKFi3Kxx9/HO9hr4UQQgh7lKo6HgcHB+Ph4RFlmYeHB6GhoTx58iTabUaOHImbm1vkw97mrVq0aBGenrno1q0Hy5dfYtWq2wwZMpa8eb356quvsFqtekcUQgghdJGqipzE6NOnDyEhIZGPK1eu6B0pyaxcuZLWrVvz+HFjlLqIxbILq3UrFksQVutgxowZy9dff613TCGEEEIXqarIyZEjBzdu3Iiy7MaNG2TMmBEXF5dot3Fycoqcp8qe5quyWCx89llvoBHwA/DipamMQF9gBOPGjefSpUs6JBRCCCH0laqKHD8/P7Zu3Rpl2ebNm/Hz89MpkX42btzI9etXgH5ATJOVdcNgSM/s2bNtmEwIIYRIGXQtch4+fMiRI0c4cuQI8OwW8SNHjnD58mXg2aWmNm3aRLb/9NNPOX/+PF9++SUnT55k2rRprFixgl69eukRX1d///03JlNmoEwsrdJjsVTin3/+sVUsIYQQIsXQ9e6qAwcOUKNGjcifAwMDAWjbti3z58/n+vXrkQUPgI+PD7/88gu9evVi0qRJ5M6dm9mzZ6fo28fv3r3LwoULOX78OA4ODlStWpVGjRrh6Oj4Ws9rNBpRygxYia1W1bQIjMboL+UJIYQQ9kxTSim9Q9hSaGgobm5uhISEJGv/HKUUw4cPZ/jQoVgiIihuMvEEOBERQY6sWZm7YEGCxgh62c6dO6latSqwGfCPodUtDIbcjB49nM8//zzR+xJCCCH0lpjv71TVJyc1GThwIP379+ez8HCuKsXBiAiOR0TwD1D6zh0a1K/Pli1bEv38lStXplChYhgMA4Cn0bRQwCCMRo127dolej9CCCFEaiVFTjK4dOkSw4cNYzAwCsj+wrpiwE9KUUUpenTpQmJPpGmaxpw532MyHcZg8Ae286ywATgOtAGmMXHiBLJkyZLo1yKEEEKkVlLkJINZs2bhajAQGMN6E9DfauXEmTP88ccfid5PxYoV2bp1M/ny3QFqYDJlw8EhF1CUzJl/Y+7cuXTp0iXRzy+EEEKkZqlqWofU4vChQ9SwWEgfS5vqQDqDgUOHDlGtWrVE76ty5cqcPn2c7du3s2vXrshpHZKic7MQQgiRmkmRk0ziugil4tEmvjRNo0aNGlHuVBNCCCHSOrlclQzKlivHNqOR2KYC/R14YrVStmzZRO0jPDyc4OBgHj58mKjtRdr19OlTFi1aRONGjahRtSoffPABv/zyCxaLRe9oQgiRpKTISQYdO3bkiVKMjWF9BDDEYKBYoUJUrlw5Qc994sQJOnbogLubG56enmTIkIGa1aqxdu3aRHdiFmnHgQMHyJ83L61bt+bOunV47tzJyZUrqVevHqVLlIgyLpUQQqR2UuQkg9y5czNw0CCGAYFA0AvrDgF1DQb2GQxMnj4dTYtpSoZX/fbbb5R58002/vADXz19yk/ALCBi926aNGlCr549pdARMTp79iy13n4brzt3OAn8YbWyBDhksbAHCD19Gv/q1QkJCdE5qRBCJA0pcpJJv379GD16NDOdncmraRR3cMDXwYEywEkPDzb8+ivVq1eP9/MFBQXRpFEjakREcNpsZgDQAOgA7LRYmApM+u475s6dmyyvR6R+o0aOJN3jx2y0WHjjheUa4AdsNpu5ePEic+bM0SmhEEIkLRnx2Ab7W7JkSeS0DlWqVKFevXqYTAnr8z1gwAC+HTGCIIuFmFI31TSO+/py7NSpBJ0hEvbvwYMHeGTLRt+wMPrG0u5D4EC+fJw6d85W0YQQIl4S8/0td1cls4wZM/Lpp5++9vMsW7iQD2IpcAA+UYpaZ87wzz//UKJEidfep7AfV65c4UlYGNXjaFcdWHL+PBaLBaPRmPzBhBAiGcnlqlTizt275Iujjc9//719+3ZyxxGpjIODAwCP42j3GDAZjRgM8qtBCJH6yW+yVCJrliycj6PNhedts2ZN7jgilfHx8cHL05PlcbRbbjRSrUoVudwphLALUuSkEi1at2ap0Uhs973M0DSKFCxI8eLFbZZLpA4mk4lPunZlkcHAXzG0WQHstVjo2qOHLaMJIUSykSInlejUqRM4OtLSYOBJNOunAWuUIvDLL+WvcBGtXr168WaZMrxtNDIWuPPf8kvAV0BLTeODFi1o2LChfiGFECIJyd1Vqchvv/1G44YNcTeb6WQ2UxK4Bcw3GtltsfBZjx58O3GiFDkiRg8fPuSzHj1YtHAh4WYzLgYDT6xWMrq60r1nTwYPHiwdjlMAq9XK77//zrFjxzCZTFSuXJmSJUvqHUsIXSXm+1uKnFTmxIkTfPvttyxeuJDHT58CULNaNbr37EnDhg2lwBHxcuvWLX755Rfu379Pjhw5qF+/Pq6urnrHEsDatWv5olcvzl26hLPBgEUpIpSiYoUKTJ85U+6cFGmWFDnxkNqLnOfCw8O5f/8+6dKlI3362OY7F0KkFosXL6Z169bUAb5RCj/AAvwMDDIaueTszB+7d8tZHZEmSZETD/ZS5Agh7EtISAi5PD1p8uQJ83m1w+QDoIrRiGOJEuw/dMj2AYXQWWK+v6XjsRBCpAALFiwg7OlTRhP9L+YMwFCLhb8OH+bAgQM2TidE6iRFjk4OHz5Mh/bt8ciShfQuLhT29WX06NHcuXMn7o2FEHZn+/btVAU8Y2lTB3A1GNixY4eNUgmRukmRo4Nvv/2W0qVL89uCBbS/e5ehT59S7tw5Bn7zDcUKFeLvv//WO6IQwsYiIiJwiaP3gBFwMhiIiIiwTSghUjkpcmxs7dq1BAYG8iVw3mxmBNALWABcsFrxvHeP2v7+3L9/X9ecQgjbKly4MPuMRp7G0uZv4K7ZTKFChWwVS4hUTYocGxsxZAjvGAyM4tXZUT2BdRYLt2/fZv78+bYPJ4TQTYcOHbhjsTA7hvUKGA14ZstG3bp1bZhMiNRLihwbOn78OAeOHKGb1UpMo9nkAhoDP8yZY8NkQgi9FShQgE4dO9JL05gOhL+w7h7wGbAEGDFmTOSEq0KI2L18MkEko2vXrgEQ18xSJZRiW1BQ8gcSQqQoU6ZOxWq10mXOHAaZTFQ1mwkDthgMmA0GJn/7LR999JHeMYUds1gsbNy4kXnz5nPp0lUyZkxPw4b1adu2LW5ubnrHSzAZJ8eG/vzzT9566y32AH6xtOsObPDy4tzlyzZKJoRISY4fP87MmTM59s8/mBwcqFylCh06dMDDw0PvaMKOXb9+ndq16/H334cwGt/EYimFpt0ENpEuXTpWr15BQECAbvlkMMB40LPIMZvN5M2Vi3o3b/J9DG2eALmNRj767DPGjx9vy3hCCCHSqCdPnlCmTAXOnLmL2bwcqPTC2usYDB0xGrewe/dOypUrp0tGGQwwhTOZTHTr2ZO5msav0ay38OwsTijQuXNn24YTQgiRZi1dupQTJ/7FbP6VqAUOgCdW62qs1gIMGjREj3iJJkWOjX3xxRfUqVuX+ppGW2Ab8C+wEPAzGpmnacyZOxdfX199gwohhEgzpk+fhcHwLjH3GnXCYvmMX3/9hatXr9oy2muRIsfGTCYTq9euZeTo0fyROzc1efaRagO4Va3K5i1baNOmjc4phRBCpCWnT5/Gaq0SR6sqKKU4d+6cTTIlBbm7Sgcmk4kvvviCwMBAjh07xqNHj8idOzdeXl56RxNCCJEGOTo6AQ/jaPVsvZOTU7LnSSpyJkdHRqOREiVK4OfnJwWOEEII3bzzTg1MpuWANZZWy8iY0Z2SJUvaKtZrkyJHCCGESOO6deuK2XwW+C6GFv9gNH5Px44f4+LiYstor0WKHCGEECKNq1ixIp9//jnPZlPswLOZ0hRwCxiL0ViNwoXzM2DAAD1jJpj0yUkljh8/zpo1awgJCSFHjhy0aNGCXLly6R1LCCGEnRgzZgy5c+dm+PDR3Lo1B9AAhcnkSMuWHzBp0kSbjy/3umQwwBQuODiYtq1a8dvWrbgZjWQzGAiyWAgH2rRuzdTp01PVqUMhhBApW0REBL/99htXr14lffr01KpVi2zZsukdK1Hf33ImJwW7c+cO1SpV4uHlyywB3rNYcLRYCAHmA30WLuTatWus37ABk0neSiGEEK/PwcHBbma6lz45Kdjo0aMJvnSJP8xmPgAc/1vuxrMZiX+2Wtm0eTMrVqzQL6QQQgiRQkmRk0I9ffqUOTNn0sFiIX8MbfyBGgYD06dMsWU0IYQQIlWQIieFOn/+PHdDQmgUR7tGVit//vUXaaxrlRBCCBEnKXJSKKv12YBMxjjamV5oK4QQQoj/kyInhfLx8SG9i0u0s5W/6FeDgZLFiqFpmk1yCSGEEKmFFDkplKurK23ateN7k4ngGNocAH6xWuncvbstowkhhBCpghQ5Kdg333yDQ+bM1DAa2c6zsScBIoAVQIDRSLkyZWjVqpVuGYUQQoiUSoqcFCxXrlxs37ULh4IFqQEUMJmoZjSSx2SiOVC+Zk02bt6Ms7Oz3lGFEEKIFEdGkEvhChQowNFjx9i2bRurV68mJCSEcjly0KpVK0qVKqV3PCGEECLFkmkdhBBCCJHiJeb7Wy5XCSGEEMIuSZEjhBBCCLskRY4QQggh7JIUOUIIIYSwS1LkCCGEEMIuyS3kScBqtfL7779z6tQpHB0dqVGjBr6+vnrHEkIIIdI0KXJe0/Lly/nmyy85f/kyDpqGWSkUUMvfn+nff0++fPn0jiiEEEKkSXK56jXMnDmTFi1aUOLyZfYCYUrxCPgBOLdtG37lynHu3DmdUwohhBBpkxQ5iRQcHEy3rl3pDKwB3gI0wAVoA+y1WMgQEkK3zp31jCmEEEIkG7PZzJo1a/D3D8DDIze5c/vw4Yet2LNnj97RAClyEm327Nk4WK2M4Flx87JsQD+LhY2bN3P27FkbpxNCCCGSV0hICNWrv817773H9u0PuXnzY4KCmrFixT4qVapEt27dsVqtumaUPjmJtG3LFmpbrWSKpU1zoB3wxx9/2G1H5AcPHrB48WK2b99OREQEhQoVokOHDvj4+OgdTQghRDJRSvH++y3Yt+9vYBsWS/XIdWbzSGAGU6d2xdMzB3379tUrppzJSazwsDDSxdHGGTBqGuHh4baIZHMrVqwgt6cnXbt04drKlTxau5Zpo0eTP39+unbpgtls1juiEEKIZPDXX3+xefNGLJY5QPWX1hqALkAvRo0ay6NHj2ye78Ukupo6dSre3t44OztToUIF9u/fH2v7iRMn8sYbb+Di4oKXlxe9evXi6dOnNkr7f28UKcIukwlLLG12AxalKFiwoK1i2cz69etp0aIFdR4/5qJS/GG1slEpgiwWJijF9zNm0K1rV71jCiGESAbz5s3DZMoLNIylVXcePgzhxx9/tFGqV+la5CxfvpzAwEAGDhzIoUOHKFmyJAEBAdy8eTPa9kuWLOHrr79m4MCBnDhxgjlz5jy7hfubb2ycHDp98gkXzWZWxrBeAWOAAj4+VK9e3XbBbMBqtRLYowcBwGKl8HphXTqgJzBJKb6fOZMTJ07oklEIIUTyuXTpMmZzKcAYSysfTKbMXL582UapXqVrkTNhwgQ6duxIu3btKFKkCDNmzCBdunTMnTs32vZ79uyhUqVKtGzZEm9vb2rVqsUHH3wQ59mf5FCuXDmaNGpEe4OBpRDljM5d4FNgHTBizBgMBt1PmCWp7du3c+bCBb5RKsYPUAcgm9HIzJkzbRlNCCGEDaRP74rBcDuOVk+wWh/h6upqk0zR0e3bNzw8nIMHD+Lv7///MAYD/v7+7N27N9ptKlasyMGDByOLmvPnz7Nhwwbq1Kljk8wv0jSNRUuWULtBA1oC+U0mPgQaAbkMBuY7ODB79myaNm1q82zJ7dixYzgZDFSOpY0TUN1i4Z+jR20VSwghhI3UrVsXq3U3ENvdwyuwWsN0+Y5+Tre7q27fvo3FYsHDwyPKcg8PD06ePBntNi1btuT27dtUrlwZpRRms5lPP/001stVYWFhhIWFRf4cGhqaNC8AcHFxYfXatfz111/MmjWLU8eP4+jkxAB/f9q3b0/27NmTbF8picFgwKoUFmL/AIUDRmNspzKFiOr48eMsWbKEmzdvkilTJpo1a0bZsmX1jiWEeEmzZs0IDPyC+/c/xWpdx7NR4l50GZOpHzVrvqvr3cWp6hby7du3M2LECKZNm0aFChU4e/Ysn332GUOHDqV///7RbjNy5EgGDx6crLnKlStHuXLlknUfKUnFihWJUIr1PDtzFZ0QYLPBwFdVqtgumEi17t27R5sPP2T9r7+S1WTCGwgCxo4dS2U/P5atXEmuXLl0TimEeM7FxYU1a1YSEPAuZnM5LJZegD/wFFiFyfQdnp6uzJs3W9+gSidhYWHKaDSqtWvXRlnepk0b1aBBg2i3qVy5svr888+jLFu4cKFycXFRFosl2m2ePn2qQkJCIh9XrlxRgAoJCUmS15FWvVWunCplNKoHoFQ0j0BQJqNRBQUF6R1VpHCPHz9W5UqXVpmNRrUYVNh/nyEzqJ9AeZlMytfbW92+fVvvqEKIlxw8eFC9+25dpWma4tk9N8rJyUW1b99BBQcHJ+m+QkJCEvz9rVufHEdHR8qUKcPWrVsjl1mtVrZu3Yqfn1+02zx+/PiVTrzPL4copaLdxsnJiYwZM0Z5iNc3feZMzjo6Us1o5Ffg+ZiWJ4CPgAnAmLFjyZkzp14RRSoxd+5cDh0+zGaLhZaA43/LjUADYLvZzI0rV/j222/1CymEiFbp0qXZsGE9Fy9eZNOmTWzdupWrVy8za9bMV7qj6EHX234CAwOZNWsWP/zwAydOnKBz5848evSIdu3aAdCmTRv69OkT2b5+/fpMnz6dZcuWceHCBTZv3kz//v2pX7++9P2wsVKlSrFj1y6shQtTB8hsNJLDZKIIsMHdnZkzZ9KrVy+9Y4pUYPrkyTQCSsewPh/wkcXCrOnTiYiIsF0wIUS8OTk5sWfPHlq1+ohs2bLh5ORM/foN2bx5s665dO2T07x5c27dusWAAQMIDg6mVKlSbNy4MbL6u3z5cpQzN/369UPTNPr160dQUBDZsmWjfv36DB8+XK+XkKaVLl2aQ3//zb59+9ixY0fktA4NGjTAyclJ73giFQgPD+fYqVP0jqNdPWDy3bsEBQXh7e1tg2RCiPj6+++/qVmzFvfuPcRqbQWUJyLiLhs3LmT9+loEBgYybtw4NC26mR6Tl6Zius5jp0JDQ3FzcyMkJEQuXQmhs/DwcJycnJjLs3neYrIJqA1cuHBBihwhUpAHDx7g61uIO3c8sFg2Ai/eVayAKUAPpk+fzqeffvpa+0rM97d9jVInhEhVHB0dKV64MOvi+AtvHeCRJYvcYSVECrNo0SJu3QrGYllL1AIHQAO6Ay0ZOXKsLjOSS5EjhNBV5+7d+QmIadzyM8APRiMdO3fGwcHBhsmEEHH54YfFPLugnDeWVl24fPl8jAP9JicpcoQQumrXrh0VypWjltHIfJ6NsgEQAawGqptM5PL2JjAwULeMQojoXbsWjFKF4mj1bH1wcHDyB3qJFDlCCF05Ozvz62+/UbNuXdoBnkYjJR0cyGky0RQoVKkS23ftwt3dXe+oQoiXZM6cCbgaR6tn6zNlypTMaV6VqkY8FkLYJzc3N9b89BNnzpxh6dKl3Lhxg8yZM9O0aVNKliypdzwhRAyaN3+Pf/4ZgtV6B8gSQ6vZZM6cncqVY5vxMHnI3VVCCCGESJSbN2/i7Z2Pp0+ro9QqwPmlFhvQtIYMGNCXQYMGvda+5O4qIYQQQthM9uzZWbNmFQ4OWzGZigPfAruB9WhaczStAXXr1qFv37665JMiRwghhBCJVrt2bf78cy/vvVcWk+kroDJQn3z5jjJp0resXbtatzsj5XKVEEIIIZLE/fv3uXbtGi4uLnh7eyfpKMeJ+f6WjsdCCCGESBKZMmXS5S6qmMjlKiGEEELYJSlyhBBCCGGXpMgRQgghhF2SPjlCCCGSzePHj1m5ciUnT57EwcGB6tWrU6NGjSTtkCpETKTIEUIIkeSUUkyePJmB/foR8uABeR0ceKIUQ4cOpZCvL/MWLuStt97SO6awc3K5SgghRJIbPXo0n332GS0ePOAccCEigutmM9sB9/PnqVm9Ovv3xzT3vBBJQ8bJEUIIkaSuXr2Kd968fGm1MiKa9U+AqgYDlCjBX4cP2zqeSKVkWgchhBC6mzVrFi6aRp8Y1rsAA6xWDhw5woEDB2wZTaQxUuQIIYRIUvv27OFti4UMsbSpAzhoGvv27bNVLJEGSZEjonXgwAE+btcOn9y5yZU9OzWqVmXJkiWEh4frHU0IkcJZrdY472oxAEZNw2q12iKSSKOkyBFRKKXo27cv5cqVY+uiRTQNCqLjrVtou3fz4YcfUumtt7h165beMYVIM8xmM6GhoamqGChVujTbjUaextJmO/DUaqVkyZI2SiXSIilyRBRTpkxhxIgRjAbOm82MBQYBv1ut7Acu//03DevWTVW/cIVIjbZv306TRo1wdnLCzc0Nt/Tp6dy5MydPntQ7Wpw6derEHYuF6TGstwDDNY3CBQpQtWpVW0YTaYwUOSJSREQEI4YM4WPgS8D40vpywBKLhb1//cXvv/9u+4BCpBGjRo2iRo0anPnlF8ZarSwDej15wk+zZ1O6VCk2bNigd8RYFShQgM969OBzTWMkEPrCunPA+5rGdk3j28mTZVBAkaykyBGRNm3aRPDt2/SMpU1NoJjJxNw5c2yUSoi05aeffqJPnz70B/42m+kFNAeG8Ozs6jvh4TRt0oTz58/rGzQO4ydMILB3b/obDOQ0GqlmNFLOZMIX2JExI6vXrCEgIEDvmMLOSZEjIl2+fBmTplEsljYa8KbZzOULF2wVS4g0ZeyoUVQ3GBjMs39vL3IGliqFi9nMtGnTdEgXf0ajkbFjx3Lp8mW+HjQIrxYtKNaqFfPmzePq9es0bNhQ74giDZBpHUQkV1dXzEoRAmSKpd1tTcM1Q2w3hwohEuPy5cvs3rePZbxa4DyXDmhrsbBkwQLGjRtnw3SJkytXLvr166d3DJFGyZkcEalWrVqYjEYWxNLmGrAZqNeggY1SCZF2PL9zsUAc7XyBm3fuJHseIVI7KXJEJE9PT95//32GGo2cimZ9ONBZ03BJl442bdrYOp4Qdi9z5swAXIqj3WUgs5tbsucRIrWTIkdEMXnKFLLnz89bRiP9gWM8+4W7EHjLaGSj0ciyFStwk1+wQiQ5b29vypQsyUxDzL+aw4H5JhPNWra0XTAhUikpckQUWbJkYefevXz46adMSpeOYoA30AbIVr062//4gzp16ugbUgg7pWkagV9+yUarlUnRrDcD7YG7QNeuXW0bTohUSGYhFzF68OABBw8eJDw8nAIFCuDj46N3JCHsnlKKr776irFjx1LVaKS9xYIncByYYTJxVikWLlpEixYt9I4qhE0l5vtbihwhhEiB1qxZw3fffsuOXbsAMBmNNG7cmM+/+ILy5cvrnE4I25MiJx6kyBFCpCZ3794lNDSULFmykEGGbhBpWGK+v2WcHCGESMEyZ84cedeVECJhpOOxEEIIIeySFDlCCCGEsEtS5AghhBDCLkmfHCFicOfOHebNm8ev69fz+NEjvPPn5+P27Xn77bcxxDJYmxBCiJRBihwhorF69Wpaf/ghlogI3rVayQv8deQItZYvp7KfHz+uW0eWLFn0jimEECIW8ueoEC/5/fffad6sGQ3Cw7lqtfIjMBf422xmM3By/37q16mD2WzWN6gQQohYSZEjxEsG9O1LBWCRUmR7YbkG+ANrLRb27t/PunXr9AkohBAiXqTIEeIFx48fZ/e+fQRarTFey60M+BmNzJw+3ZbRhBBCJJAUOUK84MyZMwBUiaNdFYuFMydPJn8gIYQQiSZFjhAvcHR0BOBBHO0eAo5OTsmeRwghROJJkSPEC9566y1cnJxYFkubcGCVyUTNgABbxRJCCJEIUuQI8QJ3d3c+bNWKb41GzsbQZjhw02ymS5cutowmhBAigaTIEeIlI0eNIkvevFQyGpkE3AMUcABoCQwBhg8fTpEiRfSMKYRduXv3LuPHj6d86dL45slDhTJlmDhxIvfu3dM7mkjFNKWU0juELSVmqnaR9ty6dYvu3bqxevVqzBYLGs8KnTw5czJgyBDat2+vd0Qh7MauXbtoULcujx4+pKFS5FOKc8BPmkZGNzfWbdiAn5+f3jGFzhLz/S1FjhCxuH79Olu2bOHJkyd4e3vz9ttvYzQa9Y4lhN04e/YspUuWpMzTpyyzWvF4Yd11oJnBwL+urhw6ehQfHx+9YooUIDHf3zKtgxCx8PT0pHXr1nrHEMJuTZgwAdfwcH62Wsnw0jpPYL3Viu/jx0yaNImJEyfqkFCkZtInRwghhC7Cw8NZOH8+Hc3mVwqc59yADhYL8+fMkalURIJJkSOEEEIXd+7c4eGTJ5SPo105IOThQ+7fv2+DVLb377//0r17d6pVrkyNqlX55ptvuHTpkt6x7IIUOUIIIXTh4uICPLuDMTbP1z9vby/MZjOfdOpE8eLFWTVjBrl37yb7zp1MGzOGfD4+DB8+nDTWbTbJSZEjhBBCF5kyZeKtcuVYaIj9q2ihwUDVSpVwdXW1UTLb6PnZZ8ydPZtpwGWzmcXAciDIYuEbpejXrx/fffedzilTNylyhBBC6KZrjx5stlpZGsP6hcAOq5WuPXrYMlayu3jxItOmT2e0UnQGHF5Y5woMBT4FBg8YwOPHj3XJaA+kyBFCCKGbli1b0qZ1az4EOvFs0M07wH6gPdAW+LhdO95//30dUya9uXPnksFg4JNY2nwO3A8NZfXq1baKZXekyBFCCKEbg8HAvPnzGT1mDBs8PCgHZAUqAJs9PRk3fjyzZs9G0zSdkyat06dPU0YpYrsAlx/I7eDA6dOnbRXL7sg4OUIIIXRlMBj44osv6NWrF7t27eLOnTtky5aNihUrYjLZ59eUo6Mjj+Io3KzAY6VwdHS0TSg7ZJ+fHiGEEKmOyWSievXqesewiRo1arBo4ULO8eyMTXS2AnfM5jRzTJKDXK4SQgghbKx58+a4u7nxuaYR3RCHD4E+RiMlihShcuXKto5nN6TIEUIIkSJcv36dQYMGkT9PHtI5O5Mja1Y6d+7Mv//+q3e0JJcuXTrmLVjAOk3jHYOB33h2eSocWAlUMho55ejIvIUL7a4/ki3pXuRMnToVb29vnJ2dqVChAvv374+1/f379+natSuenp44OTlRsGBBNmzYYKO0QgghksOePXso8sYbjBs6lLevXGFkWBht79zhp9mzKVmyJHPmzNE7YpJr0KABv27cyJ033iCAZ7eROwPNALcKFdi5Zw+lS5fWN2Qqp+ss5MuXL6dNmzbMmDGDChUqMHHiRFauXMmpU6fInj37K+3Dw8OpVKkS2bNn55tvviFXrlxcunSJTJkyUbJkyXjtU2YhF0KIlCUoKIhihQtT4tEj1lqtZH5hXQTQA/he09iyZQs1a9bUKWXyUUqxb98+/v77bwwGA35+fhQrVkzvWClOYr6/dS1yKlSoQLly5ZgyZQoAVqsVLy8vunfvztdff/1K+xkzZjB27FhOnjyJg4PDK+vjQ4ocIYRIWfr378+kkSO5ZLHgHs16K/CW0Yh79eps2rLF1vFECpGY7+8EXa568uQJu3bt4vjx46+se/r0KQsWLIj3c4WHh3Pw4EH8/f3/H8ZgwN/fn71790a7zc8//4yfnx9du3bFw8ODYsWKMWLECCwWS4z7CQsLIzQ0NMpDCCFEyvHDnDm0iqHAgWdfVF0sFn7bupXr16/bMppI5eJd5Jw+fZrChQtTtWpVihcvTrVq1aJ82EJCQmjXrl28d3z79m0sFgseHh5Rlnt4eBAcHBztNufPn2fVqlVYLBY2bNhA//79GT9+PMOGDYtxPyNHjsTNzS3y4eXlFe+MQgghkt+1GzcoHkeb5+ulyBEJEe8i56uvvqJYsWLcvHmTU6dOkSFDBipVqsTly5eTM18UVquV7NmzM3PmTMqUKUPz5s3p27cvM2bMiHGbPn36EBISEvm4cuWKzfIKIYSIWwZXV6L/0/b/npc2GTJkSO44wo7Eu8jZs2cPI0eOJGvWrPj6+rJu3ToCAgKoUqUK58+fT/COs2bNitFo5MaNG1GW37hxgxw5ckS7jaenJwULFsRoNEYuK1y4MMHBwYSHh0e7jZOTExkzZozyEEIIkXI0eu89fjCZiLnjAczTNIq+8Qa+vr42yyVSv3gXOU+ePIkyvLamaUyfPp369etTrVq1BM+t4ejoSJkyZdi6dWvkMqvVytatW/Hz84t2m0qVKnH27FmsVmvkstOnT+Pp6SnDXgshRCrVrVs3LlssfAlEdyfMUmCtUvQIDJQxY0SCxLvIKVSoEAcOHHhl+ZQpU2jYsCENGjRI8M4DAwOZNWsWP/zwAydOnKBz5848evQosm9PmzZt6NOnT2T7zp07c/fuXT777DNOnz7NL7/8wogRI+jatWuC9y2EECJlKFOmDJMmTWICUNVgYBnwD7AJaK5pfAi0bt2aDh066JpTpD7xnruqcePGLF26lNatW7+ybsqUKVit1lj7xkSnefPm3Lp1iwEDBhAcHEypUqXYuHFjZGfky5cvYzD8vw7z8vJi06ZN9OrVixIlSpArVy4+++wzvvrqqwTtVwghRMrSvXt38ufPz+gRI/hg9+7I5W/ky8fU3r355JNPonwfCBEfuo6TowcZJ0cIIVK2ixcvEhwcTMaMGSlcuLBcohJA4r6/ZRZyIYQQKYq3tzfe3t56xxB2QIocIYQQqdrTp09ZsWIF+/btw2q1Urx4cVq1aoWbm5ve0YTO5HKVEEKIVGvlypV07tSJO/fvU9zBAZNS/GOx4OTkxJDhw+nVq5dc7rITyT6tgxBCCJFSrF27lubNm1MzJITTwN8RERwym7mkFO2fPqV3796MHz9e75hCR3ImRwghRKpjNpvx8fKizI0brFEq2r/YewNTHRwIun6dLFmy2DqiSGI2O5OzcOFCKlWqRM6cObl06RIAEydO5KeffkrM0wkhhBAJ8ssvv3A1OJgBMRQ4AH0ALBbmz59vu2AiRUlwkTN9+nQCAwOpU6cO9+/fj5wBPFOmTEycODGp8wkhhBCvOHToEJ4ODpSOpU1W4C3g4MGDNkolUpoEFzmTJ09m1qxZ9O3bN8ocUmXLluWff/5J0nBCCCFEdDRNIz69LazS6ThNS3CRc+HCBd58881Xljs5OfHo0aMkCSVEahIcHMyQIUPInycPzo6OZHN3p0P79hw5ckTvaELYrbJlyxJsNvNXLG1uAPusVsqVK2erWCKFSXCR4+PjE+0v740bN1K4cOGkyCREqrF//36KFS7M6MGDqXnlCmMiIuh0/z6bFiygdOnSTJs2Te+IQtild999l7y5cjFI02KcvXw4YHRwoG3btraMJlKQBA8GGBgYSNeuXXn69ClKKfbv38/SpUsZOXIks2fPTo6MQqRIN27coE5AAAUfPOBnq5WsL6wbbDbzBdC1a1e8vb2pU6eOXjGFsEtGo5EpM2bQsEEDmmgaw5Si+H/rLgIjgFnAd+PGkTlzZt1yCn0l6hbyxYsXM2jQIM6dOwdAzpw5GTx4MO3bt0/ygElNbiEXSWXYsGGMGDiQS1Yr2aJZr3g2o7LBz48du3bZOp4QacLPP//MJ+3bE3z7Nr4ODjgAJyMiyJg+PSPHjKFz5856RxRJJDHf3wkqcsxmM0uWLCEgIAAPDw8eP37Mw4cPyZ49e6JD25oUOSKpFPTxocrFi8yJpc1yoAVw/vx5fHx8bJRMiLQlIiKCH3/8kX379mGxWChevDgtWrTA1dVV72giCSV7kQOQLl06Tpw4Qd68eRMVUm9S5Iikkt7FhSFPnxIYS5tjQDFg9+7dVKxY0UbJhBDC/thkFvLy5ctz+PDhVFvkCJFUMmbIQPDTp7G2Cf7vvxkyZIhcdv78eZYtW8atW7dwd3fn/fffl077QgiRDBJc5HTp0oXevXtz9epVypQp88rpwBIlSiRZOCFSskZNm7Jw1iyGmc04xtBmrqbhmzcvRYsWJTQ0lA4ff8yqNWtIbzCQ22DgutXKwIEDqf3OOyxYvJhs2aLr3SOEECIxEny5ymB49a7z54MyaZoWOQJySiWXq0RSOXbsGCVKlOATq5UpvDoewyqguaYxcdIkOnbsyNvVq3PswAHGWSy0BFyALcAA4AhgMJmoGRBA9x49eOedd2TmZCGEeIFNLldduHAhwcGEsEdFixbl+++/p1OnThwyGOhmsVCcZwOQzdU0VihFi+bN6dq1KzNmzODP/fvZoxTlATPwEbAAeAPoDhjMZtb/+isBv/xCowYNWLp8Oc7Ozrq9PiGESO1kFnKRakRERPDTTz+xYP58gi5fJmOmTDR67z3atm1LpkyZdMu1ZcsWRg0fztbt2yOXFcyXj+69etGlSxcMBgPFCxem4KlTrP7vn1sgMBmYC7QCnp+zUcCPQEuDgRatWjHvhx9s+EqEECLlssndVQsWLIh1fZs2bRLydDYnRU7qdOnSJerUqsXx06epaDRSzGIhGNigaaRLl46Va9ZQq1YtXTNevXqVa9eukSFDBgoVKhR5uenp06e4uLgwH2gL3AS8eHaZqm8MzzUN6KZpnDt3Tm49F0IIbFTkuLu7R/k5IiKCx48f4+joSLp06bh7925Cns7mpMhJfR48eECZkiUxX7nCKrM5yqzDwUB7g4HfTSZ2791L6dKxzUmsj8ePH+Pq6soCoDUwCfgKCAKyxLQNkNNopGe/fgwaNMg2QYUQIgVLzPd3gueuunfvXpTHw4cPOXXqFJUrV2bp0qUJDi1EXH744QfOX7zIppcKHIAcwGqrFR+LhWFDhugRL04uLi4UzJePX/87s3MJ8CHmAgcgHVBE07h06ZINEgohhH1KcJETnQIFCjBq1Cg+++yzpHg6IaKYPWMGjYACMax3BrpbLPz088/cuHHDdsHiSdM0Pu3WjVXAvzwrYO4B1li2UcAdng2+KYQQInGSpMgBMJlMXLt2LameTohIZ8+do1IcV1UrA1aluHjxok0yJVTHjh0pWrQoNY1GXHh2B9bmWNrvB06bzdStW9c2AYUQwg4l+Bbyn3/+OcrPSimuX7/OlClTqFSpUpIFEynL83GQ9ODo4EBoHCMLhz5v6xjTsHz6Sp8+PZu3baNl8+b0+/13nIHPgF0QZfZyePZauhuN5M+dm4CAAJtnFUIIe/HagwFqmka2bNmoWbMm48ePx9PTM0kDJjXpeBx/e/fuZcrkyaz76ScePX2Kl6cn7Tp25JNPPiFHjhw2y9G8WTOOrl3LCbOZmMqsrsCarFm5FBSUYgud544cOcLkyZNZtmgRWSIi6K0UDXl2WnUDMMFo5KaLC7/v2JEiO1ILkRqEhYXx448/cvr0aRwcHKhevToVKlSQQTZTsUR9f6s0JiQkRAEqJCRE7ygp2vDhwxWgfE0mNQTUdFCdQLkaDCqru7s6cOCAzbLs2LFDAWoSKBXNYz8oF4NB9e/f32aZksK5c+dUs/ffVyajUfGsG44yaJpq1KCBOnbsmN7xhEi1ZsyYobK5uytAeZhMyu2/f2OlS5RQhw8f1jueSKTEfH8nuMgZPHiwevTo0SvLHz9+rAYPHpzQp7M5KXLitnTpUgWoQaAsLxUUt0CVNxpV9syZ1Z07d2yWKTAwUAHqY1CHQZlBXQE1BFR6o1H5lSsX7ecyNbh+/br69ddf1YYNG9SVK1f0jiNEqjZ27NjI3xUn/vu9ZQG1AdSbRqPKkC6dOnr0qN4xRSIk5vs7wZerjEYj169fJ3v27FGW37lzh+zZs8vcVamcUopSxYqR+8QJ1isV7eWh64C3wcCIMWPo3bu3zXJNnjyZ0cOHc+3mzcjl6ZydaduuHWPHjn1lslghRNpy9epVvPPmJdBqZUw06x8AlYxG3MqXZ+eePbaOJ16TTcbJUTF0QD169CiZM2dO6NOJFObff//l7+PH6RpDgQPgCbxntbJw3jyb5dI0jR49enDx6lV+/fVX5syZw4oVKwi6fp1p06ZJgSOEYNasWbhoGv1iWJ8B6G+xsGvvXv755x9bRhM6iffdVe7u7miahqZpFCxYMEqhY7FYePjwIZ9++mmyhBS2c/36dQCKxNGuCLBVhyEDHBwcqF27ts33K4RI+Xbv3Ekti4XY/sZvxLO/7vfs2UPx4sVtE0zoJt5FzsSJE1FK8fHHHzN48GDc3Nwi1zk6OuLt7Y2fn1+yhBS28/x9vQZ4x9IuCORynxAiRbGYzcR1b6UJMGpaiu9aIZJGvIuctm3bAuDj40PFihVxcHBItlBCP2XKlMHL05M5169TMYY2j4GlRiOftmhhy2hCCBGrYiVLsmrvXiLMZmL6htoORChF0aJFbZhM6CXBfXKqVasWWeA8ffqU0NDQKA+RuplMJrr17MkPmsZP0aw3A500jScGg1yeFEKkKJ988gnBZjNzY1hvAUZqGoULFKBq1aq2jJZkrl+/zpAhQ6hWuTJvlS1Lqw8/ZMeOHSTwHqI0I8FFzuPHj+nWrRvZs2fH1dUVd3f3KA+R+vXu3ZvGjRvTRNNormlsAP4CZgJljEaWGwwsXLQIb29vfYMKIcQLihUrRvuPP6abpvEdz846P3cZ+FDT2AqMmzgxVQ4KOGfOHPLmycPowYPx2L2bogcPcmDFCqpXr07tWrXkREN0EnqfepcuXVThwoXVqlWrlIuLi5o7d64aOnSoyp07t1q0aFFCn87mZJyc+DGbzWry5Mnqjfz5Iweq0zRN1a9bV+3evVvveEIIEa3w8HD1SadOStM05W40qgBNU5UNBmXQNJXR1VWtWLFC74iJsnr1agWoT0Ddf2HsMiuon0FlNBpVrbffVlarVe+oycYm4+TkyZOHBQsWUL16dTJmzMihQ4fw9fVl4cKFLF26lA0bNiR9JZaEZJychFFKcfbsWR49ekTOnDlfGR9JCCFSonPnzjFnzhxOnjyJo6Mj1atXp1WrVqRPn17vaAmmlKJIwYLkO3cuxvHL1gENgG3btlG9enXbBrSRxHx/J3iCzrt375IvXz7g2d01d+/eBaBy5cp07tw5oU8nUjhN0yhQoIDeMYQQIkHy58/PiBEj9I6RJHbv3s3Js2eZBjGOX1YPKGwyMWvmTLstchIjwX1y8uXLx4ULFwAoVKgQK1asAGDdunVkypQpScMJIYQQad2ZM2cAqBJLGw2oZDZz5sQJm2RKLRJc5LRr146jR48C8PXXXzN16lScnZ3p1asXX3zxRZIHFEIIIdIyR8dno/88iKPdA8DR2TnZ86QmCb5c1atXr8j/9/f35+TJkxw8eBBfX19KlCiRpOGEEEKItK5atWoYDQaWWa3E1CkkFFhvMNC7Vi1bRkvxEtzx+EVPnz7FOZVVjdLxWAghRGrzXuPG7F+/nn1mM7leWqeA7sD3RiMXL10iV66XW9gHm0zQabFYGDp0KLly5SJ9+vScP38egP79+zNnzpyEPp0QQggh4jBp8mS0bNl4y2RiBhDCs8ENd/JsPq6pwJSpU+22wEmsBBc5w4cPZ/78+YwZMybyOiE8G4Rp9uzZSRpOCCGEEJA7d2727N9Pubp16appZOJZf5OqwAkfH5YvX84nn3yib8gUKMGXq3x9ffn+++95++23yZAhA0ePHiVfvnycPHkSPz8/7t27l1xZk4RcrhJCiNcXEhLCrl27ePLkCd7e3pQpUyZVjiKcGl25coXt27cTHh6Or68vVapUwWBI8DmLVMcm4+QEBQXh6+v7ynKr1UpERERCn04IIUQqEhISQp8+fVgwbx6Pnj6NXF6yaFEGDh1K48aNdUyXNnh5edG6dWu9Y6QKCS79ihQpws6dO19ZvmrVKt58880kCSWEECLlCQkJoXrlyiyZOZMvnj7lHHAX2AjkOH6cJk2a8P333+ucUoj/S/CZnAEDBtC2bVuCgoKwWq2sWbOGU6dOsWDBAtavX58cGYUQQqQA33zzDRdOnGCnxULxF5YHALWUogfQpUsX3nnnnciR8YXQU4LP5DRs2JB169axZcsWXF1dGTBgACdOnGDdunW88847yZFRCCGEzkJDQ/lh7lx6vlTgPKcBowE3TZOzOSLFiHfH4/Pnz+Pj45PqO5ZJx2MhxMvMZjPr169n7uzZXDx7FhdXV2rXq0enTp3kltz//Prrr9SpU4czwKu9Mv+vI/BnoUL8LdMLiCSWrOPkFChQgFu3bkX+3Lx5c27cuJHwlEIIkYLcuHGDt8qWpXHjxtzcuJHqp05R4NAhJgwfjo+3Nz/88IPeEVOEJ0+eAOAeRzt34Mnjx8meR4j4iHeR8/IJnw0bNvDo0aMkDySEELYSERFB3YAAgv79l93APouF74BFQJDFQhuzmXbt2rFhwwadk+rPx8cHgD/jaPen0YhPNHfgCqEH+7+xXgghYvDjjz9y8OhRfrRYqPjSuozATKCapjGoXz8d0qUspUqV4s3ixflW04ipj8MB4A+LhfadOtkymhAxineRo2naK/1xUnv/HCFE2jZn5kwqG41UiGG9AQi0Wvnr8GGOHj1qy2gpjqZpDBo2jC1K0QV4+Tz+AaCRyUTJokVlrByRYsT7FnKlFB999BFOTk7As8k5P/30U1xdXaO0W7NmTdImFEKIZHLu9GkaWyyxtvH777/nz5+nZMmSyR8qBWvQoAGzZs3i008+Yamm0cRiwR34y2hkp8VCyTfe4NfNm6NM+SOEnuJd5LRt2zbKz61atUryMEIIYUvOLi6ExNHm+XpnZ+fkjpMqdOjQAX9/f77//ns2rlvH40eP8PH1ZUWnTjRq1AgHBwe9IwoRKcFzV6V2cgu5EOK53r17M3/SJK5aLLjE0GYIMMbZmaDgYNzc3GwZTwjxgmS9hVwIIezNp59+yj2rlX4QbWfaE8BEo5FWbdtKgSNEKiRFjhAizSpQoAATJ05kAtBQ09jGsw61V4GRQGWjkVwFCjBy5EhdcwohEkeKHCFEmtajRw+WLVvGmfz5qQmkB7yAIY6ONGrThj/27MHdPa4h8IQQKVGKKHKmTp2Kt7c3zs7OVKhQgf3798dru2XLlqFpGo0aNUregEIIu9a8eXOOnz7N7t27WbRoEWvWrCHo+nXmzJ0rBY4QqViCZyFPasuXLycwMJAZM2ZQoUIFJk6cSEBAAKdOnSJ79uwxbnfx4kU+//xzqlSpYsO0Qgh7pWkaFStWpGLFl4cFFEKkVrqfyZkwYQIdO3akXbt2FClShBkzZpAuXTrmzp0b4zYWi4UPP/yQwYMHky9fPhumFUIIIURqoWuREx4ezsGDB/H3949cZjAY8Pf3Z+/evTFuN2TIELJnz0779u1tEVMIIYQQqZCul6tu376NxWLBw8MjynIPDw9OnjwZ7Ta7du1izpw5HDlyJF77CAsLIywsLPLn0NDQROcVQgghROqh++WqhHjw4AGtW7dm1qxZZM2aNV7bjBw5Ejc3t8iHl5dXMqcUQgghREqg65mcrFmzYjQauXHjRpTlN27cIEeOHK+0P3fuHBcvXqR+/fqRy6xWKwAmk4lTp06RP3/+KNv06dOHwMDAyJ9DQ0Ol0BFCCCHSAF2LHEdHR8qUKcPWrVsjbwO3Wq1s3bqVbt26vdK+UKFC/PPPP1GW9evXjwcPHjBp0qRoixcnJ6fISUWFEEIIkXbofgt5YGAgbdu2pWzZspQvX56JEyfy6NEj2rVrB0CbNm3IlSsXI0eOxNnZmWLFikXZPlOmTACvLBdCCCFE2qZ7kdO8eXNu3brFgAEDCA4OplSpUmzcuDGyM/Lly5cxGFJV1yEhhBBCpAAyC7kQQgghUjyZhVyIFOLJkyfMnj2bcm++STpnZ9zSp6fuu+/yyy+/kMb+rhBCCN1IkSNEErt16xaVKlSgU8eO5Pj7b4aHhdHn0SOCN2+mXr16tGndGovFondMIYSwe7r3yRHCniilaNKwIddOnOAQUOq/IQ4AvrJYWAa0XrKE3F5ejBw5UrecQgiRFkifHCGS0M6dO6latSq/ArVjaNMX+M7FhaDgYPkMCmEHHj9+zKpVqzhx4gQODg5Uq1aNmjVromma3tHsivTJEUJnCxYswNdkolYsbboAj548Ye3atbaKJYRIBkopJk+eTK4cOfiobVuWjR/PrJEj8ff3p3CBArHOwShsQ4ocIZJQ0NWrFDWbY/2HlQvIbDJx7do1W8USQiSDMWPG0KNHD5o/eMBZ4EJEBNfMZv4Asly4wNs1avDnn3/qHTNNkyJHiCSU0c2NYKMx1jYPgVCLRS5VCZGKBQUF0febb/gamAHk+2+5BlQBtlitFI+IoOsnn+iWUUiRI0SSatSoEX9aLByLpc1iwAJR5mATQqQus2bNwhnoE8N6F6C/1crBo0f566+/bJhMvEiKHCGSUJMmTcidIwcdjEZColl/EuhvNNK4USPy5Mlj63hCiCTy5759vG21Etv52HcBR01j3759toolXiJFjhBJyNHRkbXr1nEyXTpKGo2MAw4De4FAoLzRSHZfX76fNUvfoEKI12K1WOIcg8UAGDQN6wtDSQjbkiJHiCRWtmxZ9v31F1VatKCvyURpoCKwwM2NTwMD2bVvH1myZNE7phDiNZR88022G408iaXNDuCp1UrJkiVtFUu8RMbJESIZ3b17l3PnzuHg4EChQoVwdnbWO5IQIgmcPXuWAgUKMA7oHc16C1Bb07iaPz/HT5+WMXOSQGK+v2XEYyGSUebMmcmcObPeMYQQSczX15eePXvyxcSJPAG6A27/rTsLfKVp/A6s/+47KXB0JEWOEEIIkQjjx4/HwcGBQePHM0rTKA080TQOmM1kzpiR1fPn8+677+odM02Ty1UpTHh4OHv27CEkJARPT0/KlSsnfwXYuXPnznH58mVcXV158803cXBw0DuSECIBrl27xrx58zh58iQmk4lq1arRvHlzXFxc9I5mVxLz/S1FTgoRERHB8OHDmT55Mjfv3o1cXsjXl6/79aNt27Y6phPJ4bfffmPY4MHs3LMncplntmx82q0bX3/9NY6OjjqmE0KIlEXmrkqlIiIiaNywISOGDKHZ3bscAoKBrUCRc+f46KOPGDhwoM4pRVKaN28etWvXxrpvH8uBMzy7zbzRrVsMHzyYeu++S1hYmM4phRAidZMzOSnAhAkT+Orzz1mvFAHRrB/Fs1E1d+7cSeXKlW2cTiS1s2fPUuiNN2hvtTKdV//S2Aa8azDwVb9+DB48WIeEQgiR8siZnFTIarUyddIkWsRQ4AB8BRQ0mZgyebIto4lkMn36dNw0jYlE/w+wBtDRamXGlCmEh4fbNpwQQtgRKXJ0dvr0ac5fvkzrWNpoQGuzmQ3r19sqlkhG69asoYXFQmxdEj8Cbt69y/79+22USggh7I8UOTp7/PgxAHGNf5sZeCJ9NOzCw4cPyR5Hm+frHz58mNxxhBDCbkmRo7PcuXNj0DQOxNHuAJA3d25bRBLJLLeXF0fiGBbgyPO28p4LIUSiSZGjs+zZs1O/Xj2mGI1ExNDmOrDUYKD9J5/YMppIJh916MA64EIM6xXwncFA2VKlKFasmA2TCSGEfZEiJwXo07cvpzSNlppG6EvrLgLvGo24Z8lCx44ddUgnklrr1q3J5elJPaORSy+tiwC+ALZYrfSVYQOEEOK1SJGTAlSoUIEVK1ey3sGBnEYjHwF9gUaaRn5N43bWrPz2++9kzZpV56QiKWTIkIFNW7fy0MMDX03jfU1jJM8m+ctrMjFB0/juu+9o1KiRzkmFECJ1k3FyUpCgoCBmz57NmuXLn03rkDMnbT7+mFatWpEhQwa944kkFhISwoIFC5g7c+azaR3SpaNe48Z06dJFLlMJIcRLZFqHeEjJRY4Q9kgpxa1bt3jy5AnZs2eX+XyEEIkigwEKIVIMq9XKvHnzKFOyJB4eHnh7e5PF3Z0O7dtz8uRJveMJIdIAKXKEEEnOYrHwYcuWtP/4Y3IeO8ZSYBPwTVgYmxYsoFzp0mzfvl3nlEIIe2fSO4AQwv6MGTOGFStWsBJ4z2qNXF4L6GU208hqpVH9+py7eJEsWeIaClMIIRJHzuQIIZJUREQE302YQCeleC+a9a7AEquVJ48fM2/ePFvHE0KkIVLkCCGS1K5duwi+fZvYRnXKBjSyWlm+eLGtYgkh0iApcoQQSeru3bsA5I2jnTdw786d5I4jhEjDpMgRQrzCYrFgsVgStW22bNkAOBtHuzOaRjYPj0TtQwgh4kOKHCEEAOHh4cydO5dyb76Jg4MDJpOJkkWLMn36dJ48eRLv56lUqRJ5cuZkRixtgoB1QMs2bV43thBCxEiKHCEEDx8+pNbbb9OhfXuy//0305ViJpD/xAm6de1KtcqVuXfvXryey2g0Evjll8wH5kaz/h7wvtFIZnd32kiRI4RIRnILuRCCTh06cGjvXv4AKr9wy3dHpTgE1Dp6lA9btGDDpk3xer4ePXpw8sQJ2n//PbONRtpYLLgD+4F5RiNa+vRs3LgRNze35Hg5QggByJkcIdK8ixcvsmzFCsZaLFSOZn1pYKrFwq+//cY///wTr+fUNI1p06ezZs0a0lWpQmegBfBDpkx0CAzkyD//UK5cuSR8FUII8So5kyNEGrd06VJcDQZaxdLRuAmQ3WRi8eLFjBo1Kl7Pq2kajRs3pnHjxoSFhREWFkb69OkxGORvKyGEbUiRI0Qad/PmTbwMBlxjKXIcgPxAcHBwovbh5OSEk5NT4gIKIUQiyZ9UQqRxbm5uBFutRMTSxgpcBdzd3W2USgghXp8UOUKkce+99x73LBbWxtJmC3DFbKZp06a2iiWEEK9Nihwh0rjixYvjX6MGvUymaAfwuwJ0NpkoW6oUFStWtHU8IYRINClyhBAsXLKE9HnyUNpopAewFdgGfAGUNBqxeHiwcu1aNE3TN6gQQiSAFDlCCHLkyMHev/6i25dfsszdHX+gJjAnY0Y+7tmTPw8exNvbW+eUQgiRMJpSSukdwpZCQ0Nxc3MjJCSEjBkz6h1HiBQnPDycy5cvo5TCy8sLZ2dnvSMJIUSivr/lFnIhRBSOjo74+vrqHUMIIV6bXK4SQgghhF2SIkcIIYQQdkmKHCGEEELYJSlyhBBCCGGXpMgRQgghhF2SIkcIIYQQdkmKHCGEEELYJSlyhBBCCGGXpMgRQgghXtONGzcYNmwYb+TPT6YMGcibMye9evXizJkzekdL02RaByGEEOI17N27l3rvvsuTBw9oYbVSGAgCFhmNhGoaPyxYwAcffKB3zFRPpnUQQgghbCgoKIi6tWtT7OFD1litZH1h3SiLhU+A1q1akSdPHipVqqRXzDRLLlcJIYQQiTRt2jQsjx7x00sFDoAzMAcoqmmMHjlSh3RCihwhhBB2KywsjLt37xIREZEszz9/9mxaWyy4x7DeBHS1WPhlwwZu3bqVLBlEzKTISQPCwsIIDg7m4cOHekcRQgib2LFjB00aNcI1XTqyZMlCxvTp+eijjzh69GiS7cNqtXLt5k1KxtGuJGBViuvXryfZvkX8pIgiZ+rUqXh7e+Ps7EyFChXYv39/jG1nzZpFlSpVcHd3x93dHX9//1jbp2X//PMPH330EW4ZMuDp6UmGDBl4p2ZN1q1bp3c0IYRINuPHj6d69eqc+eUXxlmtrAL6h4ezffFiypUty8qVK5NkPwaDAVcXF27G0e7Gf//NkCFDkuxXxJ/uRc7y5csJDAxk4MCBHDp0iJIlSxIQEMDNm9F/bLZv384HH3zAtm3b2Lt3L15eXtSqVYugoCAbJ0/Z1q1bR7kyZdi+eDEDIiL4GZgJPPzjDxo0aECfPn30jiiEEElu48aNfP7553wN/G020xN4D/gGOGM2877ZzIctW3Ls2LEk2V+Dhg35wWTCGkubeZpG8cKF8fb2TpJ9igRQOitfvrzq2rVr5M8Wi0XlzJlTjRw5Ml7bm81mlSFDBvXDDz/Eq31ISIgCVEhISKLypgbnzp1Tzo6Oqommqaeg1EuP8aAAtXjxYr2jCiFEkvKvUUNVMBqVNZrffQpUGKicJpP65JNPkmR/e/bsUYDqB9HucykoDdTMmTOTZH9pWWK+v3U9kxMeHs7Bgwfx9/ePXGYwGPD392fv3r3xeo7Hjx8TERFB5syZo10fFhZGaGholIe9mzZtGi4WCwuVwima9YFAHYOB8aNHo9LWMElCJBmz2UxQUBDXr1/Hao3t73hhKzdv3mTLtm18arGgxdDGEfjYbGbJwoVJ8vvPz8+P0aNHMwyoZTDwI3AK2Ap8qGm0BFp9+CHt27d/7X2JhNO1yLl9+zYWiwUPD48oyz08PAgODo7Xc3z11VfkzJkzSqH0opEjR+Lm5hb58PLyeu3cKd3yxYtpbbGQLpY2naxWDv39N2fPnrVZrrhYrVZ+++03evXqxSeffMLIkSO5evWq3rGEiOL27dv069ePXB4e5M6dm5w5c5IvTx5Gjhwpnft1dufOHQB842jnCzz47w/kpPDll1+yevVqQkuVojFQCPAH9ufNy3eTJzN/wQIMBt17h6RJqXowwFGjRrFs2TK2b9+Os7NztG369OlDYGBg5M+hoaF2X+jcuXeP/HG0yffff2/fvk2BAgWSO1Kcjhw5QoumTTl17hw+Dg5kBhZbrfTv14+OHTsy6bvvcHR01DumSOMuX75MjSpVuBUURFuLhdqABfgxKIgh/fqxculStu7Ygbt7TDcUi+T0/Iz+BaByLO0uAq4uLjg4OCTZvps0aUKTJk04ffo0169fJ1OmTBQvXlyKG53pWuRkzZoVo9HIjRs3oiy/ceMGOXLkiHXbcePGMWrUKLZs2UKJEiVibOfk5ISTU3QXbexXFnd3zsVxJuz8f//NmvXl4ats78SJE9SoWpV8jx+zE6gUEYEGhAKzga9nzuTevXssXbYMTYvpJLQQyUspxXsNG2K9do2/LRa8X1jXAOhptVLz+HE+btuWtT//rFPKtM3Dw4NqlSszc+9eWsVwycoMzDWZaN6iRbL8PilYsCAFCxZM8ucViaNrieno6EiZMmXYunVr5DKr1crWrVvx8/OLcbsxY8YwdOhQNm7cSNmyZW0RNVVp0aoVC41GHsXS5nuDgTIlS+LrG9eJ3eTX56uvyPr4Mb9bLFSGyF9MGXnWf2iBUixfsYIdO3boF1Kkebt27eLAkSN8bzZHKXCeKwGMsVj4af16zp07Z+N04rnAL75gl8XCMJ7dYfEiC/ApEGS10uOzz2wfTthecvWCjq9ly5YpJycnNX/+fHX8+HHVqVMnlSlTJhUcHKyUUqp169bq66+/jmw/atQo5ejoqFatWqWuX78e+Xjw4EG89pcW7q46f/68cnFyUo1juLtq3H93Vy1ZskTvqOrKlSvKoGlqRgx3Qqj/7lgoZDKpZu+/r3dckYZ169ZNeZtMyhLLZ/URqPRGoxo1alSy5bBarcn23PZi6NChClDljUb1PagNoCb893vEaDDE+25ckbKkururAJo3b864ceMYMGAApUqV4siRI2zcuDGyM/Lly5ejjBI5ffp0wsPDadq0KZ6enpGPcePG6fUSUhwfHx9WrFrFBpOJgiYTw4CfgBlABaORz3nWVyklzIp79OhRrEpRN5Y2GlDPbObQn3/aKpYQr7h79y55lYr19Hc6wMNgiOwAm1QOHTpEu3btcEufHoPBgGe2bHz55ZdcunQpSfdjL/r168evv/6Ke40afALUAb40GinRuDG79+yhTZs2ekcUNpIiOh5369aNbt26Rbtu+/btUX6+ePFi8geyA/Xq1ePAoUN8O2ECwxcv5ml4OAABNWrwS69e1KlTR+eECSM3ugu9Zc2alZ2ahgUwxtDmIXDdYiFbtmxJtt/p06fTtWtX8hiN9DKbyQkcv32bWRMmMGPqVH5av54aNWok2f7sRe3atalduzahoaGEhISQOXNmXF1d9Y4lbExTKm0NlBIaGoqbmxshISFkzJhR7zg2ER4ezv3793F1dU1x/8iDgoLImycPk61WOsfQRgGFTCZKv/ceS5cts2U8ISL9+eefvPXWW6wD6sXQZgbQVdO4cPEiefLkee19/vbbbwQEBPAZMJ6oxdUD4D2DgX3Ozvx74kSS7E+IlCwx39+6X64Syc/R0ZHs2bOnuAIHIFeuXDSoX59xRiP3Y2izGDhtNvNp55jKICGSX/ny5ans58cnJhMno1n/J/CV0Uiz999PsoJjzMiRVDAa+ZZXzx5lAFZbrRjDwpg2bVqS7E8IeyNFjtDdqDFjuOfqSnWjkW38/9LUfWA00E7T+LBlS6pWrapbRiE0TWPlmjVkypePUgYDbYClwELgPU2jkqZRvFw5Zs6enST7u3btGlu3b6drLKP3ZgBaWywsnDcvSfYphL2RIkckm6tXrzJgwAAqli9P6eLFafb++2zevPmVIfALFizIjl27MPv6UhPI6+BASQcHchoM9DMa6dy1K/Pmz5cxcoTucuTIwd6//mLoqFHs8vKiJdAGOFWwIN9NmcKWbduSbKbp5+OHFY6jXREg+PZtmaJFiGhInxyRLGbOnEnXLl1wBupbLGQEdptM/Gs2U71KFdb+/DOZMmWKso1Sih07dvDLL7/w5MkT8ubNS+vWreMcGFIIPSilePjwIQaDIVkuBZ8/f578+fPzI9Awlnb9gakZM3I3JCTJMwiRkiTm+1uKHJHkVq1axfvvv08XYBTPTqnDs8tQvwEtjEberFSJLdu2yZDnQsRAKcWbxYuT5/hxfo7h17QZ8DGZqN22LbOS6DKZECmVdDwWulNK0b9PH+pqGlP4f4EDz8a7CQCWWixs++MPfv/9d31CCpEKaJpGz88/Z51SzI1mvRXoCVyzWOjWvbttwwmRSkiRI5LU7t27OXn2LJ8rFWNnyQCgmMnErJkzbRlNiFSnbdu2fPrJJ7QH6hsMrAX2A/OBt4xGpmka02fMoGTJkrrmFCKlkiJHJKmzZ88CUDGWNhpQ0Wzm3KlTNskkRGqlaRrTpk9n/vz5XC1ShCZABaAd4F6jBps3b6ZTp046pxQi5ZIiRyQpZ2dn4NlAZbEJBZz+ayuEiJmmabRt25ZDf//Nzp07adeuHT65c3Pk4EF6de/OmDFjknwaCSHshRQ5IklVq1YNk9HIkljahALrDAb8a9e2VSwhUr3Vq1fjX7MmaxYsIODqVbrfu0fxEyfo36cPhQoUYP/+/XpHFCLFkSJHJClPT0/ee+89RppMRDd1oAK+AsI0TU6zCxFP+/bt44MWLWhsNhNksTAd6Mez0cAvW60UCA2lTkAA165d0zmpECmLFDkiyU2cNAlnT0/8TCYmAbeBcOB3oK6mMQOYPmMGuXLl0jWnEKnF6JEjKaRpLFCKl0fk8QDWWyyEP3jAjBkz9IgnRIolRY5Icjly5GDP/v1UbdKEz41GsgFOwNvARV9fVq9eTYcOHXROKUTqcPv2bX5et44uZjMOMbTJzLPpHebNmmXLaEKkeCa9Awj7lCNHDpYtX87169fZsWMH4eHh5M+fn4oVK8r0DEIkwPXr17EqxZtxtCsFTAsOxmq1yiCbQvxHihyRrDw9PWnRooXeMYRItZ5PGXErjna3ABcnJylwhHiB/GsQQogUzMfHhyIFC/JDLGdAFfCDyUSDhrHNciVE2iNncoSwQxaLhU2bNvHvv/9iNBqpVKkSFSpUkEuFqZCmaXTv1YsunTuzGngvmjbDgdNmM7O7dbNxOiFSNilyhLAzK1eu5POePbl87RpuRiNmpXhktVK6RAlmzJ5NuXLl9I4oEqhTp07s2LaNZitX0kYp2gO5gRPANE1jvVIMGTKEKlWq6JxUiJRFLlcJYUcWLFhAs2bNKH3tGvuB+xYLoVYrGwDDsWNUr1pVBo1LhQwGA4uWLGHM2LFsy5WLKoAPUAe4XLgwixcvpn///jqnFCLl0ZRSSu8QtpSYqdqTQlhYGKtWrWLnzp1ERERQpEgR2rZtS9asWW2WQdi3+/fvk8vTk2ZPnzIXXpkg9TFQw2DgaaFCHPn3X7l0lUpZLBYOHjxISEgIOXLkoFixYvJeijQhMd/fUuTYwLp16/joo/bcvXsLk6kE4IzVehSDQdG3bx8GDhwov6TEa/vuu+/o3bMnl5XCM4Y2m4DaPJstvmLF2KZRFUKIlCUx399yuSqZbdq0iUaNGnPvnh9wArP5KGbzn1itQZjNXzB48GD69u2rd0xhB3bt2kVlTYuxwAF4B3AzGtm5c6etYgkhhG6kyElGSim6dOmBUjVQag1Q6IW1WYBhwFBGjRrN5cuX9Qkp7EZERAROcZyYNQCOmkZERIRtQgkhhI6kyElG27Zt4/z50yg1ADDG0KonBkN6Zs6cactoQid37txh9OjRvJE/Py5OTmR2c6PVhx+yb9++137uokWLss9g4FEsbf4GbpnNFC1a9LX3J4QQKZ0UOcno8OHDGI3pgcqxtEqPxVKNQ4cO2yqW0MmxY8coUaQIA7/5hrfOn2dMeDg9QkPZt2IFfn5+DBs27LWev0OHDoRarUyPYb0CRgKe2bJRr16919qXEEKkBlLkJKNnnYnVf4/YWKXjsZ178OABtf39yXLnDuetVn4AugODeDaI2xCgf//+LFq0KNH78Pb2pkf37nylaUwAnryw7jbQFVgGjB4/HgeHmKZ6FEII+yFFTjIqV64cFssj4PdYWoVgMGyjQoXytooldLB48WKu3bjBTxYLOV9aZwD6Aw01jZFDh/I6NzyOnzCBbt268bmmkctopAEQoGnkNhiY6+DAjBkzaN269Wu8EiGESD3kFvJkpJSiSJESnD6dCat1K+AYTas+GI3juHz5Ejlzvvz1J+yFX7lyZD94kJ9i+ee2hWd3P/3111+ULVv2tfZ37tw5Zs2axbF//8VoMlGpUiXatWsn4zIJIVKtxHx/y7QOyUjTNL7/fipvv/0O8C5W60jg+Rmby8AYYCpDh46QAsfOXQsKomYcf08Uf9722rXX3l/+/PkZNWrUaz+PEEKkZnK5KplVrVqV337bSM6c54EKODjkxcGhEJrmg6vrQr799lu+/vprvWOKZJYxY0aux9Hm+XpbjsQthBD2TM7k2ECNGjW4ePEsGzdu5I8//sBsNlOkSBGaN29O+vTp9Y4nbKDR++8zceRIJlksZIihzVwge+bM+Pn52TKaEELYLemTI4QNXL16Fd98+WhsNrNAKV6+t2kzUM9g4Ot+/Rg8eLAeEYWwKxEREfz8888cPnwYTdMoV64cderUwWSSv+1TK+mTI0QKlTt3bhYtWcIHLVpwAuhmsVAWuAssABZrGu/4+8sUH0IkgVWrVvFZ165cu3mT3A4OKGBYRARenp5MmzlTxolKQ6RPjhA20rRpU3b88Qe5a9Wik6bxJvA2sCN3bkaMHs1P69fj6BjdHXhCiPhatmwZ77//Pm/dvMlR4EpEBFcjIjgAlAgOpmGDBvz88896xxQ2IperhNDB9evXuXLlCunSpaNw4cIYjTFN+yGEiK/Hjx+T29OTgAcPWKIULw+xagEaaxoHsmblUlCQDIqZysjlKiFSCU9PTzw9Y5sv/P9OnDjB999/z4H/5rcqU6ECn376KYULF07OiEKkOitWrOB+aCjD4JUCB57NIDhMKUreusVPP/1E06ZNbZxQ2JpcrhIihbJarfTu3ZsiRYqwZOpUfP78k3x//smyadMoUqQIPXv2xGq16h1TiBRj3759lHBwIH8sbUoA+R0ckmRSXJHyyZkcIVKogQMH8u2ECYwDupnNOP23PMxsZjoQOGkSrq6uDB8+XMeUQqQcVqsVUzx6YJj+ayvsn5zJESIFunPnDuPGjKEv0BsiCxz++/+ewABg3Jgx3L59W4eEQqQ8JUqU4KjFEuvAm+eA0xERlChRwlaxhI6kyBEiBVq0aBFWs5kesbTpDmhWKwsWLLBVLCFStFatWuHo5MToGNYrYASQKWNGmjVrZsNkQi9S5AiRAp05c4ZCRiPZYmmTBShiNHLmzBlbxRIiRcuUKRPDRoxgEhAI3Hxh3XWgK89GFh81dizp0qXTI6KwMemTI0QK5OjoyAOe/eUZ3V0izz38r61I/Z6P0Ltu3ToePXqEl5cXH330kVxWSaDnHfL7ffMNU81mymsaVmC/1YqjkxNTx4+nU6dOescUNiLj5AiRAv3yyy/Uq1ePP/n/vPUvOwiUBX788UcaNmxou3Aiye3fv5+mjRpx5fp1SplMZLNY+MdoJNhspmG9eixcsoQMGWKa9UxE586dO/zwww8cOnQoclqHNm3akClTJr2jiURKzPe3FDlCpEAWi4UCPj7kDgpik9WKy0vrnwLvGgycz5GD85cvy2CCqdixY8fwK1+eYmFhTLdYKPnf8ghgFfCp0UjZypXZtGWLzLsk0rTEfH9LnxwhUiCj0cjCpUs54OBAFaOR1UD4f4+1QBWDgX0mEwuXLpUCJ5Ub0K8fHmFhbHqhwAFwAD4A1los/L5jh0xFIEQiSJEjRApVqVIltv/xB05ly9KUZ7eOOwFNAIcyZdi2YwdVq1bVN6R4LdevX+enn3+ml8VCTBejagJ+RiMzpk61ZTQh7IKc+xQiBStfvjy79+3j6NGjHDx4EIDSpUtTqlQpfYOJJHHixAksViu14mgXYLEw4+hRm2QSwp5IkSNEKlCyZElKliwZd0ORqjy/1BgeR7uIF9oKIeJPLlcJIYROSpYsiYuTE2tjaaOANSYTflWq2CqWEHZDihwhhNBJpkyZaPnhh0w2mbgaQ5uFwAmzmc5dutgymhB2QYocIYTQ0ZChQ3HKnp0qJhPL+f+lq2CezU/2sabxUdu21KhRQ7+QQqRSUuQIIYSOcubMyc69e/GpWJEWQFajES8HB3JrGuOdnfn8yy+ZPWcOmhbb2NdCiOhIx2MhhNBZnjx5+H3HDv7991/Wr18fOa1Ds2bNZIReIV6DFDlCCJFCFCtWjGLFiukdQwi7IZerhBBCCGGXpMgRQgghhF2SIkcIIYQQdkmKHCGEEELYJSlyhBBCCGGXUkSRM3XqVLy9vXF2dqZChQrs378/1vYrV66kUKFCODs7U7x4cTZs2GCjpEIIIYRILXQvcpYvX05gYCADBw7k0KFDlCxZkoCAAG7evBlt+z179vDBBx/Qvn17Dh8+TKNGjWjUqBH//vuvjZMLIYQQIiXTlFJKzwAVKlSgXLlyTJkyBQCr1YqXlxfdu3fn66+/fqV98+bNefToEevXr49c9tZbb1GqVClmzJgR5/5CQ0Nxc3MjJCSEjBkzJt0LEUIIIUSyScz3t65ncsLDwzl48CD+/v6RywwGA/7+/uzduzfabfbu3RulPUBAQECM7YUQQgiRNuk64vHt27exWCx4eHhEWe7h4cHJkyej3SY4ODja9sHBwdG2DwsLIywsLPLnkJAQ4FlFKIQQQojU4fn3dkIuQNn9tA4jR45k8ODBryz38vLSIY0QQgghXseDBw9wc3OLV1tdi5ysWbNiNBq5ceNGlOU3btwgR44c0W6TI0eOBLXv06cPgYGBkT9brVbu3r1LlixZkmRW39DQULy8vLhy5Yr08bEhOe62J8dcH3LcbU+OuT7iOu5KKR48eEDOnDnj/Zy6FjmOjo6UKVOGrVu30qhRI+BZEbJ161a6desW7TZ+fn5s3bqVnj17Ri7bvHkzfn5+0bZ3cnLCyckpyrLkmNU3Y8aM8o9BB3LcbU+OuT7kuNueHHN9xHbc43sG5zndL1cFBgbStm1bypYtS/ny5Zk4cSKPHj2iXbt2ALRp04ZcuXIxcuRIAD777DOqVavG+PHjqVu3LsuWLePAgQPMnDlTz5chhBBCiBRG9yKnefPm3Lp1iwEDBhAcHEypUqXYuHFjZOfiy5cvYzD8/yawihUrsmTJEvr168c333xDgQIF+PHHHylWrJheL0EIIYQQKZDuRQ5At27dYrw8tX379leWvf/++7z//vvJnCp+nJycGDhw4CuXxETykuNue3LM9SHH3fbkmOsjOY677oMBCiGEEEIkB92ndRBCCCGESA5S5AghhBDCLkmRI4QQQgi7JEWOEEIIIeySFDnxMHXqVLy9vXF2dqZChQrs378/1vYrV66kUKFCODs7U7x4cTZs2GCjpPYlIcd91qxZVKlSBXd3d9zd3fH394/zfRKvSuhn/blly5ahaVrkoJ4iYRJ63O/fv0/Xrl3x9PTEycmJggULyu+ZBEroMZ84cSJvvPEGLi4ueHl50atXL54+fWqjtPbhjz/+oH79+uTMmRNN0/jxxx/j3Gb79u2ULl0aJycnfH19mT9/fsJ2qkSsli1bphwdHdXcuXPVsWPHVMeOHVWmTJnUjRs3om2/e/duZTQa1ZgxY9Tx48dVv379lIODg/rnn39snDx1S+hxb9mypZo6dao6fPiwOnHihProo4+Um5ubunr1qo2Tp14JPebPXbhwQeXKlUtVqVJFNWzY0DZh7UhCj3tYWJgqW7asqlOnjtq1a5e6cOGC2r59uzpy5IiNk6deCT3mixcvVk5OTmrx4sXqwoULatOmTcrT01P16tXLxslTtw0bNqi+ffuqNWvWKECtXbs21vbnz59X6dKlU4GBger48eNq8uTJymg0qo0bN8Z7n1LkxKF8+fKqa9eukT9bLBaVM2dONXLkyGjbN2vWTNWtWzfKsgoVKqhPPvkkWXPam4Qe95eZzWaVIUMG9cMPPyRXRLuTmGNuNptVxYoV1ezZs1Xbtm2lyEmEhB736dOnq3z58qnw8HBbRbQ7CT3mXbt2VTVr1oyyLDAwUFWqVClZc9qz+BQ5X375pSpatGiUZc2bN1cBAQHx3o9cropFeHg4Bw8exN/fP3KZwWDA39+fvXv3RrvN3r17o7QHCAgIiLG9eFVijvvLHj9+TEREBJkzZ06umHYlscd8yJAhZM+enfbt29sipt1JzHH/+eef8fPzo2vXrnh4eFCsWDFGjBiBxWKxVexULTHHvGLFihw8eDDyktb58+fZsGEDderUsUnmtCopvk9TxIjHKdXt27exWCyRU0w85+HhwcmTJ6PdJjg4ONr2wcHByZbT3iTmuL/sq6++ImfOnK/8AxHRS8wx37VrF3PmzOHIkSM2SGifEnPcz58/z++//86HH37Ihg0bOHv2LF26dCEiIoKBAwfaInaqlphj3rJlS27fvk3lypVRSmE2m/n000/55ptvbBE5zYrp+zQ0NJQnT57g4uIS53PImRxhd0aNGsWyZctYu3Ytzs7OesexSw8ePKB169bMmjWLrFmz6h0nTbFarWTPnp2ZM2dSpkwZmjdvTt++fZkxY4be0ezW9u3bGTFiBNOmTePQoUOsWbOGX375haFDh+odTcRBzuTEImvWrBiNRm7cuBFl+Y0bN8iRI0e02+TIkSNB7cWrEnPcnxs3bhyjRo1iy5YtlChRIjlj2pWEHvNz585x8eJF6tevH7nMarUCYDKZOHXqFPnz50/e0HYgMZ91T09PHBwcMBqNkcsKFy5McHAw4eHhODo6Jmvm1C4xx7x///60bt2aDh06AFC8eHEePXpEp06d6Nu3b5RJpEXSien7NGPGjPE6iwNyJidWjo6OlClThq1bt0Yus1qtbN26FT8/v2i38fPzi9IeYPPmzTG2F69KzHEHGDNmDEOHDmXjxo2ULVvWFlHtRkKPeaFChfjnn384cuRI5KNBgwbUqFGDI0eO4OXlZcv4qVZiPuuVKlXi7NmzkUUlwOnTp/H09JQCJx4Sc8wfP378SiHzvMhUMv1jskmS79OE94lOW5YtW6acnJzU/Pnz1fHjx1WnTp1UpkyZVHBwsFJKqdatW6uvv/46sv3u3buVyWRS48aNUydOnFADBw6UW8gTIaHHfdSoUcrR0VGtWrVKXb9+PfLx4MEDvV5CqpPQY/4yubsqcRJ63C9fvqwyZMigunXrpk6dOqXWr1+vsmfProYNG6bXS0h1EnrMBw4cqDJkyKCWLl2qzp8/r3777TeVP39+1axZM71eQqr04MEDdfjwYXX48GEFqAkTJqjDhw+rS5cuKaWU+vrrr1Xr1q0j2z+/hfyLL75QJ06cUFOnTpVbyJPD5MmTVZ48eZSjo6MqX7682rdvX+S6atWqqbZt20Zpv2LFClWwYEHl6OioihYtqn755RcbJ7YPCTnuefPmVcArj4EDB9o+eCqW0M/6i6TISbyEHvc9e/aoChUqKCcnJ5UvXz41fPhwZTabbZw6dUvIMY+IiFCDBg1S+fPnV87OzsrLy0t16dJF3bt3z/bBU7Ft27ZF+3v6+bFu27atqlat2ivblCpVSjk6Oqp8+fKpefPmJWifmlJyrk0IIYQQ9kf65AghhBDCLkmRI4QQQgi7JEWOEEIIIeySFDlCCCGEsEtS5AghhBDCLkmRI4QQQgi7JEWOEEIIIeySFDlCCCGEsEtS5AghktRHH32EpmmvPM6ePZskzz9//nwyZcqUJM+VWH/88Qf169cnZ86caJrGjz/+qGseIUT0pMgRQiS52rVrc/369SgPHx8fvWO9IiIiIlHbPXr0iJIlSzJ16tQkTiSESEpS5AghkpyTkxM5cuSI8ng+a/NPP/1E6dKlcXZ2Jl++fAwePBiz2Ry57YQJEyhevDiurq54eXnRpUsXHj58CMD27dtp164dISEhkWeIBg0aBBDtGZVMmTIxf/58AC5evIimaSxfvpxq1arh7OzM4sWLAZg9ezaFCxfG2dmZQoUKMW3atFhf37vvvsuwYcNo3LhxEhwtIURyMekdQAiRduzcuZM2bdrw3XffUaVKFc6dO0enTp0AGDhwIAAGg4HvvvsOHx8fzp8/T5cuXfjyyy+ZNm0aFStWZOLEiQwYMIBTp04BkD59+gRl+Prrrxk/fjxvvvlmZKEzYMAApkyZwptvvsnhw4fp2LEjrq6utG3bNmkPgBDCtpJiZlEhhHiubdu2ymg0KldX18hH06ZNlVJKvf3222rEiBFR2i9cuFB5enrG+HwrV65UWbJkifx53rx5ys3N7ZV2gFq7dm2UZW5ubpGzFl+4cEEBauLEiVHa5M+fXy1ZsiTKsqFDhyo/P7+4XmqM+xVCpAxyJkcIkeRq1KjB9OnTI392dXUF4OjRo+zevZvhw4dHrrNYLDx9+pTHjx+TLl06tmzZwsiRIzl58iShoaGYzeYo619X2bJlI///0aNHnDt3jvbt29OxY8fI5WazGTc3t9felxBCX1LkCCGSnKurK76+vq8sf/jwIYMHD6ZJkyavrHN2dubixYvUq1ePzp07M3z4cDJnzsyuXbto37494eHhsRY5mqahlIqyLLqOxc8Lrud5AGbNmkWFChWitHveh0gIkXpJkSOEsJnSpUtz6tSpaAsggIMHD2K1Whk/fjwGw7P7IlasWBGljaOjIxaL5ZVts2XLxvXr1yN/PnPmDI8fP441j4eHBzlz5uT8+fN8+OGHCX05QogUToocIYTNDBgwgHr16pEnTx6aNm2KwWDg6NGj/PvvvwwbNgxfX18iIiKYPHky9evXZ/fu3cyYMSPKc3h7e/Pw4UO2bt1KyZIlSZcuHenSpaNmzZpMmTIFPz8/LBYLX331FQ4ODnFmGjx4MD169MDNzY3atWsTFhbGgQMHuHfvHoGBgdFu8/Dhwyjj/ly4cIEjR46QOXNm8uTJ83oHSQiRdPTuFCSEsC9t27ZVDRs2jHH9xo0bVcWKFZWLi4vKmDGjKl++vJo5c2bk+gkTJihPT0/l4uKiAgIC1IIFCxSg7t27F9nm008/VVmyZFGAGjhwoFJKqaCgIFWrVi3l6uqqChQooDZs2BBtx+PDhw+/kmnx4sWqVKlSytHRUbm7u6uqVauqNWvWxPgatm3bpoBXHm3btk3AkRJCJDdNqZcuYgshhBBC2AEZDFAIIYQQdkmKHCGEEELYJSlyhBBCCGGXpMgRQgghhF2SIkcIIYQQdkmKHCGEEELYJSlyhBBCCGGXpMgRQgghhF2SIkcIIYQQdkmKHCGEEELYJSlyhBBCCGGXpMgRQgghhF36H/8iRLwyGg/bAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.ensemble import IsolationForest\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 随机生成50个数据点\n",
    "np.random.seed(42)  # 为了结果的可重复性设置随机种子\n",
    "X = np.random.rand(50, 2)  # 2维数据,2列好画图来解释\n",
    "\n",
    "# 初始化Isolation Forest模型，contamination参数表示异常值比例，默认0.1\n",
    "iso_forest = IsolationForest(random_state=42, contamination=0.1)\n",
    "\n",
    "# 训练模型，随机建树的过程\n",
    "iso_forest.fit(X)\n",
    "\n",
    "# 预测每个点的异常分数，在树中的高度越低，越可能是异常点\n",
    "scores = iso_forest.decision_function(X)\n",
    "\n",
    "# print(scores)\n",
    "# 将异常分数转换为1（正常）和-1（异常）的标签\n",
    "labels = iso_forest.predict(X)\n",
    "# print(labels)\n",
    "# 绘制数据点和异常点\n",
    "plt.scatter(X[:, 0], X[:, 1], c=labels, cmap=plt.cm.bwr, edgecolor='k', s=50)\n",
    "plt.title('Isolation Forest Anomaly Detection')\n",
    "plt.xlabel('Feature 1')\n",
    "plt.ylabel('Feature 2')\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T07:01:47.623613100Z",
     "start_time": "2024-07-15T07:01:47.311149200Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "outputs": [
    {
     "data": {
      "text/plain": "    Feature 1  Feature 2    scores  labels\n0    0.374540   0.950714  0.001053     1.0\n1    0.731994   0.598658  0.100556     1.0\n2    0.156019   0.155995  0.053615     1.0\n3    0.058084   0.866176  0.050242     1.0\n4    0.601115   0.708073  0.071848     1.0\n5    0.020584   0.969910  0.004049     1.0\n6    0.832443   0.212339  0.019976     1.0\n7    0.181825   0.183405  0.062738     1.0\n8    0.304242   0.524756  0.108842     1.0\n9    0.431945   0.291229  0.078362     1.0\n10   0.611853   0.139494  0.061115     1.0\n11   0.292145   0.366362  0.084021     1.0\n12   0.456070   0.785176  0.045485     1.0\n13   0.199674   0.514234  0.078788     1.0\n14   0.592415   0.046450  0.002542     1.0\n15   0.607545   0.170524  0.080086     1.0\n16   0.065052   0.948886  0.050840     1.0\n17   0.965632   0.808397 -0.010826    -1.0\n18   0.304614   0.097672  0.064521     1.0\n19   0.684233   0.440152  0.080087     1.0\n20   0.122038   0.495177  0.046349     1.0\n21   0.034389   0.909320  0.049348     1.0\n22   0.258780   0.662522  0.065993     1.0\n23   0.311711   0.520068  0.108299     1.0\n24   0.546710   0.184854  0.074462     1.0\n25   0.969585   0.775133 -0.011208    -1.0\n26   0.939499   0.894827 -0.054237    -1.0\n27   0.597900   0.921874  0.001301     1.0\n28   0.088493   0.195983  0.025424     1.0\n29   0.045227   0.325330  0.007633     1.0\n30   0.388677   0.271349  0.076083     1.0\n31   0.828738   0.356753  0.040746     1.0\n32   0.280935   0.542696  0.098729     1.0\n33   0.140924   0.802197  0.051889     1.0\n34   0.074551   0.986887 -0.009478    -1.0\n35   0.772245   0.198716  0.058851     1.0\n36   0.005522   0.815461  0.019645     1.0\n37   0.706857   0.729007  0.059518     1.0\n38   0.771270   0.074045  0.006085     1.0\n39   0.358466   0.115869  0.064459     1.0\n40   0.863103   0.623298  0.038440     1.0\n41   0.330898   0.063558  0.031777     1.0\n42   0.310982   0.325183  0.093849     1.0\n43   0.729606   0.637557  0.097286     1.0\n44   0.887213   0.472215  0.013679     1.0\n45   0.119594   0.713245  0.041727     1.0\n46   0.760785   0.561277  0.095441     1.0\n47   0.770967   0.493796  0.091932     1.0\n48   0.522733   0.427541  0.069567     1.0\n49   0.025419   0.107891 -0.023624    -1.0",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Feature 1</th>\n      <th>Feature 2</th>\n      <th>scores</th>\n      <th>labels</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0.374540</td>\n      <td>0.950714</td>\n      <td>0.001053</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0.731994</td>\n      <td>0.598658</td>\n      <td>0.100556</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0.156019</td>\n      <td>0.155995</td>\n      <td>0.053615</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0.058084</td>\n      <td>0.866176</td>\n      <td>0.050242</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>0.601115</td>\n      <td>0.708073</td>\n      <td>0.071848</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>0.020584</td>\n      <td>0.969910</td>\n      <td>0.004049</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>0.832443</td>\n      <td>0.212339</td>\n      <td>0.019976</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>0.181825</td>\n      <td>0.183405</td>\n      <td>0.062738</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>0.304242</td>\n      <td>0.524756</td>\n      <td>0.108842</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>0.431945</td>\n      <td>0.291229</td>\n      <td>0.078362</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>10</th>\n      <td>0.611853</td>\n      <td>0.139494</td>\n      <td>0.061115</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>11</th>\n      <td>0.292145</td>\n      <td>0.366362</td>\n      <td>0.084021</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>12</th>\n      <td>0.456070</td>\n      <td>0.785176</td>\n      <td>0.045485</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>13</th>\n      <td>0.199674</td>\n      <td>0.514234</td>\n      <td>0.078788</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>14</th>\n      <td>0.592415</td>\n      <td>0.046450</td>\n      <td>0.002542</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>15</th>\n      <td>0.607545</td>\n      <td>0.170524</td>\n      <td>0.080086</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>16</th>\n      <td>0.065052</td>\n      <td>0.948886</td>\n      <td>0.050840</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>17</th>\n      <td>0.965632</td>\n      <td>0.808397</td>\n      <td>-0.010826</td>\n      <td>-1.0</td>\n    </tr>\n    <tr>\n      <th>18</th>\n      <td>0.304614</td>\n      <td>0.097672</td>\n      <td>0.064521</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>19</th>\n      <td>0.684233</td>\n      <td>0.440152</td>\n      <td>0.080087</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>20</th>\n      <td>0.122038</td>\n      <td>0.495177</td>\n      <td>0.046349</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>21</th>\n      <td>0.034389</td>\n      <td>0.909320</td>\n      <td>0.049348</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>22</th>\n      <td>0.258780</td>\n      <td>0.662522</td>\n      <td>0.065993</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>23</th>\n      <td>0.311711</td>\n      <td>0.520068</td>\n      <td>0.108299</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>24</th>\n      <td>0.546710</td>\n      <td>0.184854</td>\n      <td>0.074462</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>25</th>\n      <td>0.969585</td>\n      <td>0.775133</td>\n      <td>-0.011208</td>\n      <td>-1.0</td>\n    </tr>\n    <tr>\n      <th>26</th>\n      <td>0.939499</td>\n      <td>0.894827</td>\n      <td>-0.054237</td>\n      <td>-1.0</td>\n    </tr>\n    <tr>\n      <th>27</th>\n      <td>0.597900</td>\n      <td>0.921874</td>\n      <td>0.001301</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>28</th>\n      <td>0.088493</td>\n      <td>0.195983</td>\n      <td>0.025424</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>29</th>\n      <td>0.045227</td>\n      <td>0.325330</td>\n      <td>0.007633</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>30</th>\n      <td>0.388677</td>\n      <td>0.271349</td>\n      <td>0.076083</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>31</th>\n      <td>0.828738</td>\n      <td>0.356753</td>\n      <td>0.040746</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>32</th>\n      <td>0.280935</td>\n      <td>0.542696</td>\n      <td>0.098729</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>33</th>\n      <td>0.140924</td>\n      <td>0.802197</td>\n      <td>0.051889</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>34</th>\n      <td>0.074551</td>\n      <td>0.986887</td>\n      <td>-0.009478</td>\n      <td>-1.0</td>\n    </tr>\n    <tr>\n      <th>35</th>\n      <td>0.772245</td>\n      <td>0.198716</td>\n      <td>0.058851</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>36</th>\n      <td>0.005522</td>\n      <td>0.815461</td>\n      <td>0.019645</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>37</th>\n      <td>0.706857</td>\n      <td>0.729007</td>\n      <td>0.059518</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>38</th>\n      <td>0.771270</td>\n      <td>0.074045</td>\n      <td>0.006085</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>39</th>\n      <td>0.358466</td>\n      <td>0.115869</td>\n      <td>0.064459</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>40</th>\n      <td>0.863103</td>\n      <td>0.623298</td>\n      <td>0.038440</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>41</th>\n      <td>0.330898</td>\n      <td>0.063558</td>\n      <td>0.031777</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>42</th>\n      <td>0.310982</td>\n      <td>0.325183</td>\n      <td>0.093849</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>43</th>\n      <td>0.729606</td>\n      <td>0.637557</td>\n      <td>0.097286</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>44</th>\n      <td>0.887213</td>\n      <td>0.472215</td>\n      <td>0.013679</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>45</th>\n      <td>0.119594</td>\n      <td>0.713245</td>\n      <td>0.041727</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>46</th>\n      <td>0.760785</td>\n      <td>0.561277</td>\n      <td>0.095441</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>47</th>\n      <td>0.770967</td>\n      <td>0.493796</td>\n      <td>0.091932</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>48</th>\n      <td>0.522733</td>\n      <td>0.427541</td>\n      <td>0.069567</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>49</th>\n      <td>0.025419</td>\n      <td>0.107891</td>\n      <td>-0.023624</td>\n      <td>-1.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#把scores和labels拼接到一起\n",
    "df=pd.DataFrame(np.c_[X,scores,labels],columns=['Feature 1','Feature 2','scores','labels'])\n",
    "df"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T06:59:26.794831700Z",
     "start_time": "2024-07-15T06:59:26.767846500Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "outputs": [
    {
     "data": {
      "text/plain": "array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1])"
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels[labels==-1]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-15T07:01:35.812173700Z",
     "start_time": "2024-07-15T07:01:35.800665500Z"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
